Methoden Nullpointerexception obwohl Variable gesetzt

JavaEE

Neues Mitglied
Hallo zusammen,

ich habe eine Software übernommen, die nun überarbeitet werden soll. Mein Problem ist nun, dass ich bei einem Dialog eine NullPointerexception bekomme, wenn ich einen Button des Dialogs klicke, obwohl der Wert des Buttons definitiv übergeben wird und auch vorher initialisiert wird :bahnhof:. Ich versuche alle relevanten Stellen des Codes zu zeigen. Ich nutze das JRE7 und Eclipse Kepler.

Zunächst die Klasse des Dialogs+Buttons:
Java:
public class Dialog_Auswertung extends JComponent implements ActionListener {
	
	private int klicked = 0;
	private JDialog dialog;
	private static final long serialVersionUID = 1L;
	
    public Dialog_Auswertung(Double[][] werte ,String[] status, int PG) {
        . 
        .
        .
        JButton bOK = new JButton("OK");
        bOK.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                OKPressed();
            }
            
        });
        bOK.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                if (evt.getKeyCode() == KeyEvent.VK_ENTER)
                        OKPressed();
            }
        }); 

        bOK.setSelected(true);
        dialog.add(bOK, gbc); 
        dialog.setVisible(true);   
    }

    protected void OKPressed() {
		System.out.println("ok geklickt");
		setKlicked(1);		
		dialog.setVisible(false);
        dialog.dispose();
    }

@Override
    public void actionPerformed(ActionEvent arg0) {
		
    }

public void setKlicked(int klicked) {
		System.out.println("setklicked wird aufgerufen");
		this.klicked = klicked;
		System.out.println("klicked = "+this.klicked);           
}

public int getKlicked() {
		System.out.println("klicked wert wird abgerufen");
		return klicked;
}

Der Code der Klasse, die den Dialog aufruft:
Java:
if (sensor.getSensorNr().startsWith("0 261")){
	Dialog_Auswertung da = new Dialog_Auswertung(wertausgabe,statusStr,1);
}else{
	Dialog_Auswertung da = new Dialog_Auswertung(wertausgabe,statusStr,0);
}

System.out.println("da.klicked : "+da.getKlicked());     //hier tritt die Exception auf

Ich erhalte folgendes in der Konsole:
"ok geklickt
setklicked wird aufgerufen
klicked = 1
Exception in thread "Thread-11" java.lang.NullPointerException
at GUI.GUI_Funktionsprüfung$Task.Funktionsprüfung(GUI_Funktionsprüfung.java:635)
at GUI.GUI_Funktionsprüfung$Task.access$1(GUI_Funktionsprüfung.java:284)
at GUI.GUI_Funktionsprüfung$Task$1.run(GUI_Funktionsprüfung.java:256)
at java.lang.Thread.run(Unknown Source)"


Ich durchschaue nicht, wie hier eine NullPointerException entstehen kann. Ich hoffe ihr könnt mir weiterhelfen.

Vielen Dank schon mal!
 
Zuletzt bearbeitet:
Schonmal probiert, das Programm zu debuggen?
Setz dir dafür an der Stelle, wo die Exception fliegt, einen Breakpoint (Tastenkombination strg + shift + b) und lass das Programm dann laufen.
Dann kannst du mittels Step Into (F5) oder Step Over (F6) jeden Schritt durchgehen und mittels Rechtsklick -> Watch auf den Variablenwert schauen, vielleicht fällt dir dann auf, wo die NPE herkommt.

Die protected Klasse sollte übrigens außerhalb des Konstruktors liegen.
Täusche ich mich, oder fehlt hier etwa eine geschweifte Klammer zu?
 
Zuletzt bearbeitet:
Ok habe es gefunden. Das Debuggen hat geholfen, vielen Dank. Problem war, dass dieser Ausdruck:
Java:
Dialog_Auswertung da = new Dialog_Auswertung(wertausgabe,statusStr,1);
[/Java]

nicht auf das instanzierte field verweist. Also einfach Dialog_Auswertung gelöscht und schon gehts:
[code=Java]
da = new Dialog_Auswertung(wertausgabe,statusStr,1);
[/Java]

Die protected ist außerhalb des Konstruktors. Vielleicht ist was beim Code kopieren verrutscht :oops:. Oha wirklich falsch kopiert, sry. Habe es der Vollständigkeit halber korrigiert.
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben