JFrame On Close Operation

Мне было интересно, есть ли способ, нажав на "X", чтобы программа выполнила некоторый код перед закрытием JFrame. Метод setDefaultCloseOperation() принимает только целое число.

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Ответы

Ответ 2

@Джеффри имеет хороший ответ, но вы должны подумать над тем, что вы пытаетесь сделать. Если вы действительно хотите что-то сделать после закрытия фрейма, то WindowListener - это путь. Однако, если вы ищете место для очистки и изящного завершения работы, то скорее всего вам понадобится shutdown hook. Используя WindowListener, код будет запускаться, как вы сказали, только нажатием кнопки "X". Но что делать, если пользователь запускает приложение на переднем плане терминала и убивает его с помощью Ctrl + C? Что делать, если пользователь убивает процесс из командной строки или из диспетчера задач?

Ответ 3

this.addWindowListener(new WindowAdapter(){
                public void windowClosing(WindowEvent e){
                    int i=JOptionPane.showConfirmDialog(null, "Seguro que quiere salir?");
                    if(i==0)
                        System.exit(0);//cierra aplicacion
                }
            });