Je veux faire mon Java Application pour appeler ma propre fonction personnalisée lorsque le bouton croisé "Fermer" est enfoncé. Pour autant que je vois, il n'y a aucun moyen puisque setDefaultCloseOperation
n'a aucune surcharge du tout.
Une idée de comment cela peut être réalisé?
Toutes les suggestions ci-dessus sont correctes car vous devez utiliser un WindowListener.
Cependant, toutes les réponses sont également incomplètes car elles oublient de mentionner que vous pouvez également ajouter:
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frame.addWindowListener(...);
Cela permettra à votre code de prendre le contrôle total du processus de fermeture de la fenêtre car la fenêtre ne se fermera pas automatiquement sauf si vous le lui dites (généralement en utilisant la méthode dispose () sur le cadre). Cela vous permet de demander à l'utilisateur de confirmer ou non la fermeture de la fenêtre.
Fermeture d'une application possède une API simple qui vous permet de créer une action simple qui est exécutée lorsque la fenêtre est fermée. Il gère l'opération de fermeture et le code d'écoute de fenêtre pour vous.
peut-être celui-ci, mais avant cela, lisez le tutoriel WindowListener posté par Howard, il y a des/autres options
WindowListener exitListener = new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
int confirm = JOptionPane.showOptionDialog(
null, "Are You Sure to Close Application?",
"Exit Confirmation", JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE, null, null, null);
if (confirm == 0) {
System.exit(0);
}
}
};
frame.addWindowListener(exitListener);
Vous pouvez ajouter un écouteur de fenêtre pour le cadre:
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
onExit();
}
});
...
public void onExit() {
System.err.println("Exit");
System.exit(0);
}
Vous pouvez ajouter un WindowListener
à votre cadre (voir par exemple ici ).