2013-07-17 17 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