2010-05-28 173 views
9

如何防止關閉Java swing應用程序,當用戶單擊關閉按鈕時?防止關閉Java swing應用程序

+1

這裏是一個更基本的問題:如果用戶無法通過關閉窗口退出應用程序,他們是如何應該退出? – Avrom 2010-05-28 17:09:28

回答

12

frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);您的主框架應該防止這種情況。

setDefaultCloseOperation(int)方法允許您選擇當用戶關閉的JFrame做什麼:

  • DO_NOTHING_ON_CLOSE(在WindowConstants中定義):不執行任何操作; 要求程序處理註冊WindowListener對象的windowClosing方法 中的 操作。

  • HIDE_ON_CLOSE(在WindowConstants中定義):在調用任何 註冊的WindowListener對象後,自動隱藏 框架。

  • DISPOSE_ON_CLOSE(在WindowConstants中定義):自動隱藏 和調用任何 註冊的WindowListener對象後處理該幀。

  • EXIT_ON_CLOSE(在JFrame中定義):使用系統退出方法退出應用程序 退出方法。僅在 應用程序中使用此項。

+0

你能給我舉一個例子,我怎麼能在用戶關閉窗口時捕獲這個事件?我想在幀被處理之前重置一些靜態變量,但是我找不到如何做到這一點的信息。至於下一次重新加載,由於已經設置了這些變量的值,框架的行爲是錯誤的。 – Johnydep 2012-01-30 21:01:28

+0

@Johnydep - 你不應該在評論中提問,而應該是一個完整的[question](http://stackoverflow.com/questions/)問),下次再做。簡短回答:您創建的JFrame是一個Window,並且您可以添加一個WindowListener。 – Gnoupi 2012-01-31 18:59:32

+0

好的,下次我會小心;) – Johnydep 2012-02-05 23:13:43

2
JFrame frame = new JFrame(); 
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 

frame.addWindowListener(new WindowAdapter() { 
// handle window closing 
});