webentwicklung-frage-antwort-db.com.de

JFrame.dispose () vs System.exit ()

Was ist der Unterschied zwischen diesen beiden Methoden - System.exit() und JFrame.dispose()?

Wenn wir eine Java Swing-Anwendung schließen möchten, wenn auf eine Schaltfläche geklickt wird, welche Methode soll ich verwenden?

31
Adil

System.exit(); bewirkt, dass Java VM) vollständig beendet wird.

JFrame.dispose(); bewirkt, dass das Fenster JFrame vom Betriebssystem zerstört und bereinigt wird. Laut Dokumentation kann dies dazu führen, dass Java VM) beendet wird, wenn kein anderes Windows verfügbar ist, dies sollte jedoch tatsächlich der Fall sein nur als Nebeneffekt und nicht als Norm gesehen werden.

Welches Sie wählen, hängt wirklich von Ihrer Situation ab. Wenn Sie alles in der aktuellen Java VM beenden möchten, sollten Sie System.exit() verwenden und alles wird bereinigt. Wenn Sie nur das aktuelle Fenster zerstören möchten, klicken Sie auf Nebeneffekt, dass das Java VM wenn dies das einzige Fenster ist, dann benutze JFrame.dispose().

52
wattostudios

JFrame.dispose ()

public void dispose()

Gibt alle nativen Bildschirmressourcen frei, die von diesem Fenster, seinen Unterkomponenten und allen zugehörigen untergeordneten Elementen verwendet werden. Das heißt, die Ressourcen für diese Komponenten werden zerstört, der verbrauchte Speicher wird an das Betriebssystem zurückgegeben und als nicht anzeigbar markiert. Das Fenster und seine Unterkomponenten können wieder angezeigt werden, indem die nativen Ressourcen mit einem nachfolgenden Aufruf zum Packen oder Anzeigen neu erstellt werden. Die Zustände des neu erstellten Fensters und seiner Unterkomponenten sind identisch mit den Zuständen dieser Objekte an dem Punkt, an dem das Fenster abgelegt wurde (ohne Berücksichtigung zusätzlicher Änderungen zwischen diesen Aktionen).

Hinweis: Wenn das letzte anzeigbare Fenster in der Java virtuellen Maschine (VM)) gelöscht wird, wird die VM möglicherweise beendet AWT Threading Issues für weitere Informationen.

System.exit ()

public static void exit(int status)

Beendet die aktuell ausgeführte Java Virtual Machine. Das Argument dient als Statuscode. Ein Statuscode ungleich Null gibt standardmäßig eine abnormale Beendigung an. Diese Methode ruft die Exit-Methode in der Klasse Runtime auf. Diese Methode gibt niemals zurück normalerweise.

Der Aufruf System.exit(n) entspricht praktisch dem Aufruf:

Runtime.getRuntime().exit(n)

Darüber hinaus können Sie mit der Funktion System.exit() einen Exit-Code zurückgeben, der insbesondere dann sehr nützlich sein kann, wenn Sie den Prozess automatisch mit der Funktion System.exit(code); aufrufen. Auf diese Weise können Sie beispielsweise feststellen, ob Während des Laufs ist ein Fehler aufgetreten.

5
CloudyMarble
  • Wenn Sie mehrere Fenster geöffnet haben und nur das geschlossene Fenster schließen möchten, verwenden Sie JFrame.dispose().

  • Wenn Sie alle Fenster schließen und die Anwendung beenden möchten, verwenden Sie System.exit()

4
Noah Herron