Comment détecter la JFrame est fermé?
J'ai essayé un addWindowListener
et de mettre en œuvre la windowClosing
, il fonctionne, quand je presse le bouton de fermeture, mais lorsque j'utilise Cmd+Q
à proximité, l' windowClosing
n'est pas appelée, comment puis-je le résoudre? Ai-je besoin pour détecter Cmd+Q
sur mac, Alt + F4
sur windows via clé auditeur? C'est qu'un général de l'auditeur pour la fermeture de la fenêtre, quelle que soit via le bouton fermer ou le clavier, ou un événement Ctrl+Alt+Delete
ou Cmd+Option+Esc
concentrer tuer? Merci.
- stackoverflow.com/questions/2061194/...
- leepoint.net/notes-java/GUI/containers/10windows/...
- Avez-vous trouvé une solution à votre problème? Merci de poster votre propre réponse si vous l'avez fait.
InformationsquelleAutor DNB5brims | 2011-11-21
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr de ce que la situation est sur Mac, mais sur Windows, vous obtenez le windowClosing() rappel du bouton de fermeture;
Alt-F4
; et si vous fermez l'application via le gestionnaire des tâches. Il n'y a pas de rappel si vous utilisez le gestionnaire de tâches pour tuer le processus, mais je ne m'attends pas ça de toute façon.Vous avez rappelé à l'appel
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
sur votre JFrame exemple, n'avez-vous pas?il y a une méthode plus windowClosed()
essayez primordial chose de la méthode. espérons que cela fonctionnera pour vous.
Vous pouvez utiliser cette osx bibliothèque:
com.apple.eawt.ApplicationListener
Fera sûrement l'affaire.
Des informations à partir de la documentation:
Bien entendu, cette solution ne fonctionnera pas sur Windows. Autant que je sache, il n'y a cependant pas de solution universelle, donc c'est probablement la meilleure façon d'aller.
Sonne comme vous devez ajouter quelques
KeyListeners
et une usine pour détecter celui que vous souhaitez pour un système d'exploitation particulier.Découvrez
Comme vous l'avez dit windowClosing est appelée lorsque vous cliquez sur le (x) bouton. Je suis aussi sur un mac, et la façon dont je reçois la CMD+Q pour envoyer un signal à l'application à l'aide de Moment de l'exécution.addShutDownHook