web-dev-qa-db-fra.com

JFrame à la fermeture de l'opération

Je me demandais s'il y avait un moyen, en cliquant sur le "X", de laisser le programme exécuter du code avant de fermer le JFrame. La méthode setDefaultCloseOperation() ne prend qu'un entier.

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
17
The JAVA Noob

Vous pourriez être intéressé par l'utilisation d'un WindowListener . Le WindowListener tutoriel .

13
Jeffrey
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
                }
            });
20
MaynorSong

@Jeffrey a une bonne réponse, mais vous devriez considérer ce que vous essayez de faire. Si vous voulez vraiment faire quelque chose à la fermeture d'un cadre, alors un WindowListener est le chemin à parcourir. Cependant, si vous cherchez un endroit pour faire des tâches de nettoyage et d'arrêt gracieux, vous voudrez probablement un crochet d'arrêt à la place. En utilisant un WindowListener, le code ne sera déclenché, comme vous l'avez dit, que par l'utilisateur "cliquant sur le X". Mais que se passe-t-il si l'utilisateur démarre l'application au premier plan d'un terminal et la tue avec Ctrl + C? Que faire si l'utilisateur tue le processus à partir de la ligne de commande ou d'un gestionnaire de tâches?

16
Ryan Stewart