2013-07-17 36 views
0

如果你使用表單右上角的小X來關閉一個GUI,那麼它是否也會終止你的所有線程?當你關閉一個帶有小X的圖形用戶界面時

如果不是,如何捕捉該事件,以便我可以放入一些關閉代碼?

+3

當且僅當您在主JFrame上執行setDefaultCloseOperation(EXIT_ON_CLOSE)時,它將*殺死線程。 –

+0

當你測試它時發生了什麼? – camickr

+0

儘管Luiggi解決了主要問題,但您總是可以添加一個'WindowListener',它在'Window'被關閉時激活。 – 2013-07-17 05:38:52

回答

4
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

要關閉時執行一些代碼看看這個。 close window event in java

+1

我把它放在構造函數中: public class MainWindow extends javax.swing.JFrame { public MainWindow(){ this.pool = Executors.newCachedThreadPool(); setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE); initComponents(); } – DevilCode

+0

恰好,但僅適用於「好風格」:爲什麼不導入javax.swing.JFrame?它會讓你的代碼更容易閱讀。 –

+0

謝謝你的幫助,它完美的工作。 – DevilCode

2

如果您使用窗體右上角的小X關閉GUI,那麼是否也會殺死所有線程?

是的,如果Luiggi提到的默認關閉操作是EXIT_ON_CLOSE。 OTOH最好不要隨意「殺死」線程。

如果沒有,如何捕捉該事件,以便我可以放入一些關閉代碼?

設置的DO_NOTHING_ON_CLOSE默認關閉操作並添加WindowListenerWindowAdapter。在偵聽器中,處理GUI並結束線程。

有關詳細信息,請參閱How to Write Window Listeners

+0

'DISPOSE_ON_CLOSE'也可能是另一種選擇,除非需要按照特定的順序執行'dispose',相對於其他關閉操作。 – afsantos