Methoden Schließen eines Fensters

Kobold137

Mitglied
Hallo Community,


ich habe ein Problem beim schließen meines Main-Frames.
Dies möchte ich mittels einer Methode "beenden()" machen.
Rufe ich die Methode über mein Menü auf, klappt alles.
Jedoch wenn ich die Methode über ein WindowEvent aufruf beendet er mir das Programm, auch wenn ich auf Nein klicke.

Die Methode beenden():
Java:
//Sicherheitsabfrage beim Schließen des Fensters
    public void beenden(){
        int result = JOptionPane.showConfirmDialog(null,"Wollen sie das Programm wirklich beenden", "Programm beenden", JOptionPane.YES_NO_OPTION);
        switch(result){
        case JOptionPane.YES_OPTION:
        System.exit(0);
        case JOptionPane.NO_OPTION:
        }
    }

So rufe ich die Methode über das WindowEvent auf:
Java:
frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e){
                int result = JOptionPane.showConfirmDialog(null,"Wollen sie das Programm wirklich beenden", "Programm beenden", JOptionPane.YES_NO_OPTION);
                switch(result){
                case JOptionPane.YES_OPTION:
                System.exit(0);
                case JOptionPane.NO_OPTION:
                }
            }
        });

Und wen es Interessiert hier rufe ich die Methode mit dem Menü auf:

Java:
public void actionPerformed(ActionEvent e) {
            String ac= e.getActionCommand();
           
            if(ac == "Neu"){
                DialogNeuesRegister dng = new DialogNeuesRegister(frame,"Neue Abfrage");
            }else if(ac == "Beenden"){
                frame.beenden();
            }
        }
 
switch ist hier ein ziemlicher Overkill. Versuch es mal mit
Java:
if (result == JOptionPane.YES_OPTION) System.exit(0);

Außerdem vergleicht man Strings nicht mit == sondern mit .equals(String).

Vielleicht löst das schon das Problem.
 
Danke für die vielen Lösungsvorschläge.

War über das Wochenende leider verhindert um diese Auszuprobieren.

Gucky mit dem equals hast du recht. Danke für den Hinweis.

Ich muss leider sagen das Problem besteht immernoch.
Ich hab jetzt sogar versucht die beenden() Methode im windowsAdapter aufzurufen.
Das Fenster schließt sich leider Trozdem wenn ich auf Nein klicke.

Eine Idee, die mir eben gekommen ist:
Kann es sein, dass wen ich auf das x im Programm klicke der Befehl zum schließen kommt. Durch den Dialog aufruf dieser aber nur Pausiert wird. Wenn nun mein Dialog abgearbeitet ist, wird das schließen trozdem ausgeführt.

Lösungsvorschlag:
Gibt es eine Möglichkeit dies zu unterbrechen oder ist einfach windowClosing() die Falsche Methode die ich aufrufe im WindowListener?
 
Ich muss leider sagen das Problem besteht immernoch.
Ich hab jetzt sogar versucht die beenden() Methode im windowsAdapter aufzurufen.
Das Fenster schließt sich leider Trozdem wenn ich auf Nein klicke.

Hast du folgendes schon ausprobiert?
Hast du eventuell sowas in deinem Code stehen:
Java:
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

Es gibt noch andere "CloseOperations" eine davon wäre "DO_NOTHING_ON_CLOSE".
http://stackoverflow.com/questions/...indowclosing-from-actually-closing-the-window
 
Perfekt =)
Danke das war die Methode die ich gesucht habe =)
Also war meine Vermutung richtig. Nein hatte ich bis jetzt noch nicht weil ich nicht wusste in wie fern ich dies hätte machen können.

Recht herzlichen Dank =)
 

Zurück
Oben