Wert eines JSlider beim Verändern in GUI anzeigen

klaussp

Grünschnabel
Hallo Zusammen,

habe ein Fenster gebastelt das ein Label enthält, das den Wert der variable anzeigt die ein JSlider verändert, und möchte nun beim verschieben des Sliders den Wert in der GUI ebenfalls ändern. Wie geht das? Habs schon mit label.repaint() bzw. label.updateUI() versucht, läuft aber nciht!



Code:
package gui;

import java.awt.BorderLayout;
import java.awt.Container;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class Kontrollcenter extends JFrame implements ChangeListener{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JSlider slider = new JSlider();
	private JLabel label = new JLabel();
	private Integer verzoegerung = 0;
	Container cp = getContentPane();
	
	public Kontrollcenter(){
		super("Kontroll-Center");
		//addWindowListener(new WindowClosingAdapter(true));
		String test = "Verzögerung " + verzoegerung;
		label = new JLabel(test);
		cp.add(label,BorderLayout.NORTH);
		
		JLabel ms = new JLabel("                                   Delay (ms)");
		cp.add(ms, BorderLayout.CENTER);
		
		slider = new JSlider(JSlider.HORIZONTAL,0,500,verzoegerung);
		slider.setMajorTickSpacing(100);
		slider.setMinorTickSpacing(10);
		slider.setPaintTicks(true);
		slider.setPaintLabels(true);
		slider.addChangeListener(this);
		cp.add(slider,BorderLayout.SOUTH);
	}
	public void stateChanged(ChangeEvent event) {
		JSlider sl = (JSlider)event.getSource();
		verzoegerung = sl.getValue();
		System.out.println(verzoegerung);
		label.updateUI();
	}

	
	public static void main(String[] args){
		Kontrollcenter fenster = new Kontrollcenter();
		fenster.setSize(300,120);
		fenster.setVisible(true);
		fenster.setDefaultCloseOperation(EXIT_ON_CLOSE);
	}
	

	
}
 

Anhänge

  • slider.jpg
    slider.jpg
    3,5 KB · Aufrufe: 88
Hallo,

damit der Label sich ändert musst du ihm einfach im ChangeListener einen neuen Text zuweisen:
Code:
public void stateChanged(ChangeEvent event) {
	JSlider sl = (JSlider)event.getSource();
	verzoegerung = sl.getValue();
	System.out.println(verzoegerung);
	label.setText(verzoegerung);
}
repaint oder updateUI brauchst du nicht, dass wird automatisch aufgerufen, wenn der Text sich ändert.
 
Zurück