Запустить функцию на 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)