Запустить функцию на JFrame close
void terminate() {}
protected JFrame frame = new JFrame();
как я могу получить frame
для запуска функции завершения при нажатии кнопки закрытия?
Edit: я попытался запустить это, но по какой-то причине он не печатает тест (однако программа закрывается). Кто-нибудь знает, в чем может быть проблема?
frame.addWindowListener(new WindowAdapter() {
public void WindowClosing(WindowEvent e) {
System.out.println("test");
frame.dispose();
}
});
4 ответов
можно использовать addWindowListener:
frame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
... //call terminate
...
}
});
посмотреть void windowClosing (WindowEvent e) и Класс WindowAdapter тоже.
мало того, что вам нужно добавить прослушиватель окон, вы должны установить операцию закрытия по умолчанию, чтобы ничего не делать при закрытии. Это позволяет выполнять код.
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);
}
Если вы хотите завершить свою программу после закрытия JFrame, вы должны установить операцию закрытия по умолчанию на JFrame.
в вашем конструкторе вашего JFrame напишите:
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Если вы просто хотите вызвать метод, когда окно закрыто и не завершить всю программу, чем идти с ответом Марун.
рамка.метод dispose () не завершает работу программы. Расторгнуть програме нужно называть системой.метод exit (0)