Dialog soll sich beim Klick auf Button schließen

DieDreiJavas

Mitglied
Hallo!
Wir haben folgendes Problem: Wir haben einen JDialog, in dem etwas eingegeben werden kann, beim Klick auf "ok" soll dieser dann geschlossen werden und es soll sich ein anderes Fenster öffnen.
Allerdings gibt es beim Klick auf den BUtton eine NullPointerException. WIeso?
Hier ist mal der relevante Quellcode:
Java:
public class DialogSuche extends JDialog {
private JDialog dialog;
public DialogSuche() {
        super();
        this.setSize(400, 200);
        this.setLocationRelativeTo(null);
        this.setModal(true);
        this.add(liefereInhalt());
        this.setVisible(true);
       
    }
public JPanel liefereInhalt() {
        JPanel inhaltsPanel = new JPanel();
        inhaltsPanel.setLayout(new BorderLayout());
        inhaltsPanel.add(erstelleEingabePanel(), BorderLayout.NORTH);
        inhaltsPanel.add(erstelleTextFeld(), BorderLayout.CENTER);
        inhaltsPanel.add(erstelleOkButton(), BorderLayout.SOUTH);
    
        return inhaltsPanel;
    }
public void macheUnsichtbar() {
        dialog.setVisible(false);
    }
und hier der ActionListener (haben wir in eine andere Klasse ausgelagert)
Java:
public class Actionlistener implements ActionListener {
private DialogSuche suche;
public void actionPerformed(ActionEvent arg0) {
        
        String kommando = arg0.getActionCommand();
        if (kommando.equals("OkSuche")) {
       
            suche.macheUnsichtbar();
                 
        }
    }
}
 
Java:
private DialogSuche suche;

"suche" habt ihr keinen Wert zugewiesen, somit ist die Variable "null" 😉
 
in macheUnsichtbar() wäre es dann ebenso ein Fehler dass dialog null ist, dort wird aber gar keine Variable benötigt,
einfach this bzw. nix vor dem Aufruf
 
Also mit this bzw. nichts davor haben wir auch schon versucht, aber leider mit dem gleichen Ergebniss 🙁
und suche ist ja eigentlich ein Objekt von DialogSuche, deshalb kann das nicht null sein, oder?!???:L
 
suche ist eine Variable und Variablen können null sein,
solange das nicht funktioniert kommt macheUnsichtbar() gar nicht dran, insofern egal dort im Moment etwas zu ändern
 
Da fehlt mmN das Wissen über die OOP 😉

DialogSuche ist eine Klasse. Davon können beliebig viele Instanzen erstellt werden - sprich, es können mehrere DialogSuche-Objekte existieren. Wenn ihr "DialogSuche suche;" deklariert, dann ist es nur eine Variable, die eine dieser Instanzen enthalten kann. Ihr müsst schon genau sagen, welche gemeint ist.
 
das heißt dann...was?^^
also in einer anderen Methode im ActionListener wird die Instanz suche erzeugt
Java:
if (kommando.equals("sucheName")) {

            DialogSuche suche = new DialogSuche();
        
        }
 
wenn du den ActionListener addest, gibst du am besten eine Referenz auf das [c]suche[/c] mit

Java:
class Actionlistener implements ActionListener {
	private DialogSuche suche;

	public Actionlistener(DialogSuche suche) {
		this.suche = suche;
	}

	public void actionPerformed(ActionEvent arg0) {...

dann kannst du auch auf den richtigen Dialog zugreifen.
aber wenn ich so eine Klasse schon sehe

Java:
public class DialogSuche extends JDialog {
private JDialog dialog;
zeugt das davon, dass du definitiv nicht weißt, was du machst!
 
> also in einer anderen Methode im ActionListener wird die Instanz suche erzeugt

im ActionListener wird der Dialog erzeugt?!
und du kannst nicht einfach noch weitere Methoden haben, es braucht schon ein Gesamtbild hier bevor man das gut beurteilen kann

der gepostete Code sieht übrigens nach einer lokalen Variable aus,
das wäre wiederum was anderes als das private Instanzattribut,
vielleicht ist die lokale Variable belegt, das Attribut bleibt null
 

Zurück
Oben