Когда вы закрываете графический интерфейс маленьким крестиком

Если вы закроете графический интерфейс с помощью маленького крестика в правом верхнем углу формы, убьет ли это все ваши потоки?

Если нет, то как вы поймаете это событие, чтобы я мог добавить код закрытия?


person DevilCode    schedule 17.07.2013    source источник
comment
Он уничтожит потоки тогда и только тогда, когда вы выполните setDefaultCloseOperation(EXIT_ON_CLOSE) в основном JFrame.   -  person Luiggi Mendoza    schedule 17.07.2013
comment
Что произошло, когда вы проверили это?   -  person camickr    schedule 17.07.2013
comment
Несмотря на то, что Луиджи решил основную проблему, вы всегда можете добавить WindowListener, который активируется, когда закрывается Window.   -  person    schedule 17.07.2013
comment
сделать другие потоки демоном   -  person    schedule 17.07.2013


Ответы (2)


setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Чтобы выполнить некоторый код при закрытии, взгляните на это. событие закрытия окна в java

person Danny.    schedule 17.07.2013
comment
Я помещаю это в конструктор: открытый класс MainWindow extends javax.swing.JFrame { public MainWindow() { this.pool = Executors.newCachedThreadPool(); setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE); инициализироватьКомпоненты(); } - person DevilCode; 17.07.2013
comment
точно, но только для хорошего стиля: почему вы не импортируете javax.swing.JFrame? Это сделало бы ваш код более удобным для чтения. - person Danny.; 17.07.2013

Если вы закроете графический интерфейс с помощью маленького крестика в правом верхнем углу формы, убьет ли это все ваши потоки?

Да, если операция закрытия по умолчанию — EXIT_ON_CLOSE, как упоминал Луиджи. OTOH, лучше не просто произвольно "убивать" потоки.

Если нет, то как вы поймаете это событие, чтобы я мог добавить код закрытия?

Установите операцию закрытия по умолчанию DO_NOTHING_ON_CLOSE и добавьте WindowListener или WindowAdapter. В прослушивателе избавьтесь от графического интерфейса и завершите потоки.

Дополнительные сведения см. в разделе Как писать прослушиватели окон.

person Andrew Thompson    schedule 17.07.2013
comment
Я полагаю, что DISPOSE_ON_CLOSE также может быть альтернативой, если только не требуется выполнять dispose в определенном порядке относительно других операций закрытия. - person afsantos; 18.07.2013