2013-04-30 6 views
18

Ich habe eine einfache GUI:Java Swing Hinzufügen Aktion Listener für EXIT_ON_CLOSE

public class MyGUI extends JFrame{ 

     public MyGUI(){ 
      run(); 
     } 

     void run(){ 
      setSize(100, 100); 
      setVisible(true); 
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// maybe an action listener here 
     } 
    } 

Ich mag würde aus dieser Nachricht drucken:

System.out.println("Closed"); 

Wenn die GUI geschlossen wird (wenn die X gedrückt wird). Wie kann ich das machen?

Antwort

44

Versuchen Sie dies.

addWindowListener(new WindowAdapter() 
     { 
      @Override 
      public void windowClosing(WindowEvent e) 
      { 
       System.out.println("Closed"); 
       e.getWindow().dispose(); 
      } 
     }); 
+0

perfekte Antwort, danke. – Sam

0

könnte andere Möglichkeit dispose() von der Window Klasse außer Kraft zu setzen sein. Dies reduziert die Anzahl der gesendeten Nachrichten und funktioniert auch, wenn die standardmäßige Schließoperation auf DISPOSE_ON_CLOSE festgelegt ist.

Konkret bedeutet dies,

@Override 
public void dispose() { 
    System.out.println("Closed"); 
    super.dispose(); 
} 

Ihre Klasse MyGUI hinzufügen.

Hinweis: Vergessen Sie nicht, super.dispose() aufzurufen, da dies die Bildschirmressourcen freigibt!

0

schreiben Dieser Code innerhalb Konstruktor Ihrer JFrame:

this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 
    this.addWindowListener(new java.awt.event.WindowAdapter() { 
     @Override 
     public void windowClosing(java.awt.event.WindowEvent e) { 
      System.out.println("Uncomment following to open another window!"); 
      //MainPage m = new MainPage(); 
      //m.setVisible(true); 

      e.getWindow().dispose(); 
      System.out.println("JFrame Closed!"); 
     } 
    });