Aktueller Wert von einem JSlider auf ein Label

cboy

Mitglied
Hallo,
setze mich gerade mit GUI auseinander und hätte eine Frage zum JSlider. Und zwar hab ich in meinem (einfachen) Programm ein JLabel (label) und ein JSlider (slider) hinzugefügt. Jetzt wollte ich den aktuellen Wert des JSliders auf ein Label haben. Also wenn ich den slider auf z. B. 4 stelle, dass dann auch im Label eine 4 steht. Als ich jedoch dem slider den ChangeListener adden wollte (Zeile 47 im Code), gibt er folgende Fehlermeldung aus:

Exception in thread "main" java.lang.NullPointerException
at Fenster.<init>(Fenster.java:47)
at Fenster.main(Fenster.java:13)

Hier einmal der Code von mir:

Java:
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

import java.awt.GridLayout;
import java.awt.event.*;


public class Fenster extends JFrame implements ChangeListener {

	
	public static void main(String[] args) {
		Fenster fenster1 = new Fenster("Mein Fenster");
		fenster1.setVisible(true);
	
	}
	
	private JSlider slider;
	private JLabel label;
	
	public Fenster (String title){
		//Superklasse aufrufen mit title
		super(title);
		
		//Layout ist gridLayout
		this.setLayout(new GridLayout(1,2));
		
		//GUI-Komponenten definieren
		JSlider slider = new JSlider();
		JLabel label = new JLabel();
		
		//Hinzufügen zu Fenster
		this.add(slider);
		this.add(label);
		
		//Einstellungen für Slider
		slider.setMinimum(0); //Minimalwert ist Null
		slider.setMaximum(10); //Maximalwert ist 10
		slider.setMinorTickSpacing(1); //Feine Striche in 1er Schritte
		slider.setMajorTickSpacing(2); //Große Striche in 10er Schritten
		slider.setPaintTicks(true); //Striche werden angezeigt
		slider.setPaintLabels(true); //Anzeige der Zahlen
		slider.setPaintTrack(true); //Balken werden angezeigt
		slider.setSnapToTicks(true); //Zu ganzzahligen Werten "springen"
		
		//ChangeListener hinzufügen
		this.slider.addChangeListener(this);
		
		//anordnen
		this.pack();
		
		
		
	}
	
	public void stateChanged (ChangeEvent e){
		//Wenn sich slider auf einen anderen Wert bewegt soll dieser
		//Wert im Label angezeigt werden
		this.label.setText(Integer.toString(slider.getValue()));
		
	
	}
	
}


Bin für jede Hilfe dankbar 🙂
 
Typischer Anfängerfehler: Es existieren eine Instanzvariable und eine lokale Variable mit gleichem Namen. Die Instanzvariablen werden nicht verwendet, statt dessen werden im Konstruktor lokale Variablen mit gleichen Namen deklariert.

Die Worte "JSlider" und "JLabel" aus Zeile 29 und 30 löschen.
 

Neue Themen


Zurück
Oben