О переопределении метода run() GUI в методе main
Проблема в том, что когда я закрываю окна GUI, я хочу запустить последний метод (например, printList()), но мне не удается это сделать. Это мой основной метод
public static void main(String args[]) {
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
patientTest2 screen = new patientTest2();
screen.setVisible(true);
screen.setResizable(false);
} catch (FileNotFoundException ex) {
Logger.getLogger(patientTest2.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
PatientTest2 - мой класс JFrame. Я предполагаю, что если я поставлю printList()
до } catch (FileNotFoundException ex) {
это должно работать и, наконец, распечатать мой список в файл, но это не так. Я буду рад, если вы сможете мне помочь и объяснить, почему, конечно же,?
3 ответа
Вы должны добавить слушателя, который расширяет WindowAdapter
в свой кадр и переопределить метод windowClosing(WindowEvent e)
, В этом методе вы сможете вызывать любые методы, которые хотите вызвать, до закрытия окна.
Вам нужно
- изменить операцию закрытия по умолчанию на
JFrame.DO_NOTHING_ON_CLOSE
(если окно является JFrame) - добавьте WindowListener в ваше окно верхнего уровня
- слушайте события закрытия окна, вызывая ваш метод
- и, наконец, выйдите из JVM с соответствующим кодом выхода (обычно 0, если ошибок нет).
Если вы хотите, чтобы что-то работало, когда ваша Java VM была закрыта, то вам стоит взглянуть на
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
@Override
public void run() {
//The stuff you want to do at shutdown.
}
}));
Пожалуйста, прочитайте здесь для получения дополнительной информации.
Вы также должны установить DefaultCloseOperation вашего Окна, если вы хотите закрыть свою Программу (и завершить работу своей Java VM), когда JFrame закрыт.
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Это я думаю то что ты просил. Надеюсь это поможет.