2010-05-28 5 views
9

Comment empêcher la fermeture de Java Application swing, lorsque l'utilisateur clique sur le bouton de fermeture?Empêcher de fermer Java swing Application

+1

Voici une question plus fondamentale: Si les utilisateurs ne peuvent pas quitter votre application en fermant la fenêtre, comment sont-ils censés quitter? – Avrom

Répondre

12

frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); sur votre cadre principal devrait empêcher cela.

La méthode setDefaultCloseOperation(int) vous permet de choisir ce qu'il faut faire lorsque l'utilisateur ferme la JFrame:

  • DO_NOTHING_ON_CLOSE (défini dans WindowConstants): Ne rien faire; nécessite le programme pour gérer l'opération dans la méthode windowClosing d'un objet WindowListener enregistré.

  • HIDE_ON_CLOSE (défini dans WindowConstants): cacher automatiquement la trame après avoir appelé tous les objets WindowListener enregistrés.

  • DISPOSE_ON_CLOSE (défini dans WindowConstants): cacher automatiquement et disposer le châssis après avoir appelé tous les objets WindowListener enregistrés.

  • EXIT_ON_CLOSE (défini dans JFrame): Quittez l'application à l'aide de la méthode de sortie System . Utilisez-le uniquement dans les applications .

+0

pouvez-vous me donner un exemple de comment puis-je attraper cet événement lorsque l'utilisateur ferme la fenêtre? Je veux réinitialiser une variable statique avant que le cadre ne soit éliminé, mais je ne peux pas trouver d'informations sur la façon de le faire. Comme lors du prochain rechargement, le cadre agit mal à cause des valeurs déjà définies de ces variables. – Johnydep

+0

@Johnydep - Vous ne devriez pas vraiment poser de questions dans les commentaires, mais plutôt dans une [question] complète (http://stackoverflow.com/questions/ demander), faites-le la prochaine fois. Réponse courte: le JFrame que vous avez créé est une fenêtre, et vous pouvez ajouter un WindowListener. – Gnoupi

+0

OK, je ferai attention la prochaine fois;) – Johnydep

2
JFrame frame = new JFrame(); 
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 

frame.addWindowListener(new WindowAdapter() { 
// handle window closing 
});