web-dev-qa-db-fra.com

JFrame.dispose () vs System.exit ()

Quelle est la différence entre ces deux méthodes - System.exit() et JFrame.dispose()?

Si nous voulons fermer une application Java Swing lorsqu'un bouton est cliqué, quelle méthode dois-je utiliser?

31
Adil

System.exit(); entraîne la fin complète de Java VM).

JFrame.dispose(); provoque la destruction de la fenêtre JFrame et son nettoyage par le système d'exploitation. Selon la documentation , cela peut entraîner la Java VM) à se terminer s'il n'y a pas d'autre Windows disponible, mais cela devrait vraiment juste être vu comme un effet secondaire plutôt que la norme.

Celui que vous choisissez dépend vraiment de votre situation. Si vous voulez tout terminer dans la = Java VM actuelle), vous devez utiliser System.exit()] et tout sera nettoyé. Si vous souhaitez uniquement détruire la fenêtre en cours, effet secondaire qui fermera le Java VM s'il s'agit de la seule fenêtre, utilisez JFrame.dispose(). _.

52
wattostudios

JFrame.dispose ()

public void dispose()

Libère toutes les ressources d'écran natives utilisées par cette fenêtre, ses sous-composants et tous ses enfants. En d’autres termes, les ressources de ces composants seront détruites, toute mémoire utilisée sera restituée au système d’exploitation et elles seront marquées comme non lisibles. La fenêtre et ses sous-composants peuvent être rendus affichables à nouveau en reconstruisant les ressources natives avec un appel ultérieur pour emballer ou afficher. Les états de la fenêtre recréée et de ses sous-composants seront identiques à ceux de ces objets au point où la fenêtre a été supprimée (sans tenir compte de modifications supplémentaires entre ces actions).

Remarque: Lorsque la dernière fenêtre affichable dans la Java machine virtuelle (VM) est supprimée, le VM peut se terminer. Voir Problèmes de thread AWT pour plus d'informations.

System.exit ()

public static void exit(int status)

Termine la machine virtuelle Java en cours d'exécution. L'argument sert de code d'état. par convention, un code d'état différent de zéro indique une fin anormale. Cette méthode appelle la méthode exit dans la classe Runtime. Cette méthode ne retourne jamais normalement.

L'appel System.exit(n) est effectivement équivalent à l'appel:

Runtime.getRuntime().exit(n)
12

En plus de ce qui précède, vous pouvez utiliser la fonction System.exit() pour renvoyer un code de sortie particulièrement utile si vous appelez automatiquement le processus à l'aide de la fonction System.exit(code);, ce qui peut vous aider à déterminer par exemple si une erreur est survenue pendant la course.

5
CloudyMarble
  • Si vous avez plusieurs fenêtres ouvertes et que vous ne voulez que fermer celle qui a été fermée, utilisez JFrame.dispose().

  • Si vous voulez fermer toutes les fenêtres et fermer l'application, utilisez System.exit()

4
Noah Herron