Функция запуска при закрытии JFrame
void terminate() {}
protected JFrame frame = new JFrame();
Как я могу получить frame
для запуска функции завершения при нажатии кнопки закрытия?
Изменить: я попытался запустить это, но по какой-то причине он не распечатывает тест (однако программа закрывается). Кто-нибудь имеет представление о том, что может быть проблемой?
frame.addWindowListener(new WindowAdapter() {
public void WindowClosing(WindowEvent e) {
System.out.println("test");
frame.dispose();
}
});
Ответы
Ответ 1
Вы можете использовать addWindowListener:
frame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
... //call terminate
...
}
});
См. void windowClosing (WindowEvent e) и Класс WindowAdapter тоже.
Ответ 2
Не только вы должны добавить слушателя окна, вы должны установить операцию закрытия по умолчанию, чтобы ничего не делать при закрытии. Это позволяет выполнять код.
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent event) {
exitProcedure();
}
});
Наконец, вам нужно вызвать System exit, чтобы фактически остановить работу вашей программы.
public void exitProcedure() {
frame.dispose();
System.exit(0);
}
Ответ 3
Если вы хотите завершить свою программу после закрытия JFrame, вам нужно установить операцию закрытия по умолчанию на вашем JFrame.
В вашем конструкторе вашего JFrame напишите:
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Если вы просто хотите вызвать метод, когда окно закрыто и не завершает всю программу, чем идти с ответом Маруна.
Ответ 4
Метод Frame.dispose() не завершает работу программы. Чтобы завершить программу, вам необходимо вызвать метод System.exit(0)