2012-12-05 56 views
6

我想調用一個函數來在我的窗口(使用Java Swing創建)關閉時進行清理。 在我的初始化代碼我這樣做:如何在Java Swing中爲窗口關閉創建處理程序

public class FormLogin extends JFrame{ 
    private void initComponents(){ 
     ... 
     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

     addWindowListener(new java.awt.event.WindowAdapter() { 
      public void windowClosed(java.awt.event.WindowEvent evt){ 
       formLoginWindowClosed(evt); 
      } 
     }); 
     ... 
    } 
} 

但功能「formLoginWindowClosed」當我按下退出鍵永遠不會被調用。我也嘗試使用java.awt.event.WindowAdapter作爲參數來創建監聽器,但它也不起作用。 我應該如何創建窗口關閉的偵聽器? 在此先感謝。

+0

可能重複[如何捕獲的Java Swing close事件](http://stackoverflow.com/questions/8781108/how-to-capture-a-close -event-in-java-swing) – Suma

回答

8

隨着框架設置爲關閉退出,windowClosed將永遠不會被調用,主要是因爲在引發事件之前系統已經退出。使用windowClosing代替。

或者,你可以使用的shut down hook

+1

謝謝,我將setDefaultCloseOperation更改爲DISPOSE_ON_CLOSE,現在工作正常。 – Joel

+0

@Joel如果這解決了您的問題,請考慮在帖子旁邊勾選空的複選標記。 +1瘋狂的好東西 –

相關問題