J'ai un JDialog comme la fenêtre principale de mon application (à l'origine, c'était un jframe, mais il a montré dans la barre des tâches que je ne voulais pas).
actuellement je fais: p> et quand je clique sur un bouton de sortie: p> mais le processus encore Semble suspendre dans l'arrière-plan p> jframe avait Comment puis-je fermer mon application? < / p> p> jframe.exit_on_close code> qui semblait faire ce que je voulais. p>
6 Réponses :
Vous pouvez ajouter où vous souhaitez que le programme se termine, peut-être immédiatement après la ligne Disposer (). P> P>
Je pensais que ça fermait la totalité de la JVM. Ne fera-t-il que fermer pour l'application actuelle?
Comme mentionné par @camickr , Définit l'opération qui se passera par défaut lorsque l'utilisateur initie
une "fermeture" sur cette boîte de dialogue. Vous devez spécifier l'un des éléments suivants
Choix: p>
Si Vous savez que le exit_on_close code>
champ est également hérité par jdialog code>, non? grève> p>
exit_on_close code> n'est pas une valeur valide pour le
setDefaultCloseoperation code>
Méthode de la classe jdialog code>. Comme indiqué par l'API, P>
do_nothing_on_close code> (défini dans
windowConstants code>): Ne faites rien; exiger que le programme gère l'opération dans le
Méthode de visualisation de fenêtre d'un objet de fenêtre déposé. LI>
hide_on_close code> (défini dans
windowConstants code>): masque automatiquement la boîte de dialogue après avoir appelé tout fichier
windowlistener code> objet. li>
Dispose_on_close code> (défini dans WindowsConstants): masque et jetez automatiquement la boîte de dialogue après avoir appelé tous les objets enregistrés
WindowListener code> Objets. Li>
ul>
blockQuote>
EXIT_ON_CLOSE CODE> est transmis comme argument, un
IllegalArgumentException code> sera lancé. p>
Ouais, j'utilisais WindowBuilder pour créer l'interface graphique et ce n'était pas une option disponible, donc je pensais que ce n'était pas disponible. Merci
-1, vraiment? Dans JDK6, selon l'API EXIT_ON_CLOSE n'est pas valide et lorsque j'essaie d'utiliser, je reçois une idée illegalArgumentException au moment de l'exécution. S'il s'agit d'une nouvelle fonctionnalité de JDK7, je vais supprimer le vote Down après que un commentaire soit ajouté indiquant la nouvelle fonctionnalité.
@mre pas facile à faire cela de manière programmatique, tous les conteneurs de haut niveau ont quelque chose **** l'appeler mal, Stackoverflow.com/questions/5540354/... , peut-être pour rafraîchir un autre problème (s) < un href = "http://stackoverflow.com/questions/6309407/remove-top-level-container-on-level-container-on-runtime" Titre = "Supprimer le conteneur de niveau supérieur sur l'exécution"> Stackoverflow.com/questions/6309407/... a>
@camickr, hmm..vous est vrai. Je ne peux toujours pas trouver où cela est écrit dans l'API cependant. Je ne suis pas sûr que le vote au bas soit justifié, mais c'est le genre de personne que vous êtes. Donc quel que soit. Si vous pouviez me signaler aux lignes spécifiques qui indiquent que ce champ n'est pas valide, je serais plus que reconnaissant. Mais cela ne fait pas ma réponse faux. L'API montre clairement que exit_on_close code> est un champ hérité. Pas ma faute Cette subtilité particulière est mal documentée Afaik.
@mre, donc c'est ok pour upvoter de mauvaises réponses, mais ce n'est pas correct pour bowervoter de mauvaises réponses? Quel est le point de descendre? Cette réponse est fausse et trompeuse, c'est pourquoi j'ai voté! Les valeurs valides sont clairement documentées dans l'API pour la méthode SETDEFAULTCOSOPERATION () CODE>. Je ne peux toujours pas croire que cela a eu un uppot après que mon commentaire ait été fait. Au fait, non où dans ma réponse, j'ai attaqué votre personnage, j'ai simplement indiqué que la réponse était fausse. Nous faisons tous des erreurs (je sais que je fais tout le temps), j'espère juste que nous apprenons d'eux.
@camickr, je ne suis pas sûr qui a suscité, mais merci de me pointer dans la bonne direction. Et pour d'autres, voir .
Vous devez ajouter un windowListener qui fera System.exit (0) lorsque la boîte de dialogue se ferme. Bien sûr, le système.exit (0) après avoir appuyé sur le bouton de sortie. (qui a été suggéré ailleurs dans ce fil) reste nécessaire. p> p>
Ça y est. Dans mon cas, nous avons `jPanel` étendu wiith `jdualog` donc je n'ai donc pas pu appeler `addwindowlisternerner` directement. Mais puisque nous avons étendu notre boîte de dialogue avec jdialog code>, j'ai pu appeler `Super.adddwindowstenner ...` et ça marche.
envisagez d'utiliser meilleur serait d'ajouter JWindow code> (Un-décorettad par DEFALUT), mais c'est peu compliqué de bit, que
jwindow code> Initialisations requises à partir de
jframe code> (juste doit exister, rien d'autre) comme parent p>
windowlistener code> et tous les événements / actions serait redirigé / géré de cette façon p>
Pour moi, travaillez seulement avec WindowsClingez l'événement:
dialog.addWindowListener(new WindowAdapter() @Override public void windowClosing(WindowEvent e) { System.exit(0); } });
Vous pouvez essayer ceci ci-dessous code source incroyable - ceci ci-dessus a été éteint le processus ainsi qu'après disposition du conteneur JDialog, également un avantage supplémentaire, si ce JDialog est en cours d'exécution au-dessus de tout autre jframe ou JDialog, le parent ne se terminera pas, mais si cette JDialog fonctionne seul, le processus sera terminé complètement, profitez-en. P> P>