2016-07-21 16 views

Antwort

3

Ein JFrame ist ein Objekt und kann daher niemals null sein, während eine JFrame-Variable entweder auf ein gültiges JFrame-Objekt verweisen kann oder keine Referenz hat und daher "be null" ist. Wenn Sie dispose() für das JFrame-Objekt aufrufen, ist das Objekt weiterhin vorhanden und die Variable ist daher nicht null. Der JFrame hat jedoch einige Systemressourcen freigegeben. Diese Ressourcen werden wieder gewonnen, wenn das JFrame-Objekt erneut gerendert wird.

Wie oft der Fall ist, ist der beste Test für eine Frage wie diese zu 1) Erstellen und Testen von Code ausführen und 2) überprüfen Sie die API

zB

JFrame frame = new JFrame("Foo"); 
frame.pack(); 
frame.setVisible(true); 

// in some listener 
frame.dispose(); // it's no longer visible 
System.out.println("is frame null? " + (frame == null)); 

Per Fenster API , von der die dispose-Methode geerbt wird:

Gibt alle nativen Bildschirmressourcen frei, die von diesem Fenster, seinen Unterkomponenten und allen zugehörigen untergeordneten Elementen verwendet werden. Das bedeutet, dass die Ressourcen für diese Komponenten zerstört werden. Der von ihnen verbrauchte Speicher wird an das Betriebssystem zurückgegeben und als nicht wiedergabebereit markiert. Das Fenster und seine Unterkomponenten können erneut angezeigt werden, indem die systemeigenen Ressourcen mit einem nachfolgenden Aufruf zum Packen oder Anzeigen neu erstellt werden. Die Zustände des neu erstellten Fensters und seiner Unterkomponenten sind mit den Zuständen dieser Objekte an dem Punkt identisch, an dem das Fenster angeordnet wurde (ohne zusätzliche Änderungen zwischen diesen Aktionen zu berücksichtigen).

Verwandte Themen