2010-11-11 35 views
3

我有一個Java項目。
我有一個JFrame與連接到它像這樣
JFrame抓取事件

frame.addWindowListener(new WindowAdapter() { 

      public void windowClosing(WindowEvent evt) { 
       this.setEnabled(true); 

      } 
     }); 

但是,該幀上我也有一個關閉按鈕的處理程序(使之更加用戶友好的)和「關閉」按鈕將調用框架處置方法。現在,當我點擊右上角的小x按鈕關閉框架時,WindowListener被調用。但是,當我調用dispose方法時,事件不會觸發。
我應該調用一些其他方法來關閉,所以WindowListener觸發,或者可能實現另一個偵聽器?

回答

3

那架我也有一個關閉按鈕上(使之更加人性化)

退房的Closing an Application解決方案來處理這個問題。你真正需要做的就是將「ExitAction」添加到你的按鈕,但是如果你願意,你可以使用整個方法。

+0

該訣竅! TNX! – Andrej 2010-11-11 20:09:37

0

我花了幾天尋找與OP相同的問題的解決方案。

這是隱藏在明顯的景象。 如果框架被X按鈕關閉或者調用了myFrame.dispose()方法,則會調用windowClosed()方法。

JFrame myFrame = new JFrame(); 
myFrame.addWindowListener(new java.awt.event.WindowAdapter() { 
    @Override 
    public void windowClosed(java.awt.event.WindowEvent windowEvent) { 
     // your code 
    } 
}); 

來源:https://alvinalexander.com/blog/post/jfc-swing/closing-your-java-swing-application-when-user-presses-close-but