Функция запуска при закрытии JFrame

void terminate() {}
protected JFrame frame = new JFrame();

Как я могу получить frame для запуска функции завершения при нажатии кнопки закрытия?

Изменить: я попытался запустить это, но по какой-то причине он не распечатывает тест (однако программа закрывается). Кто-нибудь имеет представление о том, что может быть проблемой?

frame.addWindowListener(new WindowAdapter() {
    public void WindowClosing(WindowEvent e) {
        System.out.println("test");
        frame.dispose();
    }
});

Ответ 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)