2011-01-12 11 views
2

In meinem Java-Programm möchte ich, dass, unabhängig von anderen geöffneten Fenstern, immer wenn der Benutzer auf das rote X in der Ecke klickt, nur das Schwenkrahmen schließt. Ich experimentierte mit JFrame.DISPOSE_ON_CLOSE und anderen Fenster-Listenern, aber wenn ich einen JFrame verlasse, wird das System immer noch beendet.Java - JFrame nur beim Schließen freigeben?

Um dies zu verdeutlichen, nehme ich an, ich habe zwei JFrames sichtbar, das Verlassen eines verlässt automatisch das andere und das System wird beendet. Irgendwelche Ideen, wie man nur einen JFrame schließt? Vielen Dank.

+0

wenn der einzige Rahmen Lauf angeordnet ist, wird das System nach einer kleinen Zeit der Inaktivität verlassen. – Robert

+0

Robert - das System wird immer noch beendet, auch wenn andere Frames geöffnet sind, und schließen sie auch, was mein Problem ist. – Connor

+1

Vielleicht haben Sie noch einen 'WindowListener', der' System.exit() 'aufruft? – finnw

Antwort

0

Finnw war korrekt - ich habe einen neuen WindowListener gesetzt (obwohl er nie System.exit() aufgerufen hat, wenn es nicht standardmäßig funktioniert), aber ich kann damit jetzt vorwärts gehen. Vielen Dank an all

+1

Sie müssen auf das Häkchen neben der richtigen Antwort klicken, um die Antwort als Antwort zu akzeptieren – fmucar

+0

Das Häkchen unter dem Zähler? Es sagt, dass ich meine eigene Antwort in zwei Tagen annehmen kann ... – Connor

7

Dies funktioniert für mich:

public class Test { 

    public static class TestFrame implements Runnable{ 
     public void run() { 
      JFrame frame = new JFrame(); 
      frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
      frame.setSize(200, 300); 
      frame.setVisible(true); 
     } 
    } 

    public static void main(String[] args) { 
     EventQueue.invokeLater(new TestFrame()); 
     EventQueue.invokeLater(new TestFrame()); 
    } 
} 
+0

Danke, dass Sie sich die Zeit genommen haben, einen Test zu schreiben - ich hatte einen WindowHandler, der das System redundant verließ, als ich X anklopfte und die defaultCloseOperation überschrieb. Muss ich noch etwas tun, um diese Frage zu beenden? – Connor

+3

Wenn Sie eine Antwort (einschließlich Ihrer eigenen) akzeptieren, werden die Leute wahrscheinlich aufhören, darauf zu antworten ... aber nichts schließt es - so dass andere Menschen auch von der Antwort und in der Tat von zukünftigen Antworten lernen können. – Robert

Verwandte Themen