2016-07-21 24 views

回答

3

JFrame是一個對象,因此不能爲null,而JFrame變量可以引用有效的JFrame對象或沒有引用,因此「爲空」。如果您在JFrame對象上調用dispose(),則該對象仍然存在,因此該變量不爲null。但是JFrame已經發布了一些系統資源。如果重新呈現JFrame對象,則會再次獲取這些資源。

正如通常的情況下,像這樣的問題是1)創建和運行測試代碼和2)檢查API

例如最佳的測試,

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)); 

每窗口API ,其中處理方法從以下部分繼承:

釋放此窗口,其子組件及其所有子級使用的所有本機屏幕資源。也就是說,這些組件的資源將被銷燬,它們消耗的所有內存將被返回到操作系統,並且它們將被標記爲不可顯示。 窗口及其子組件可通過重新構建本地資源並隨後調用打包或顯示來再次顯示。重新創建的窗口及其子組件的狀態將與窗口所處位置處的這些對象的狀態相同(不考慮這些操作之間的額外修改)。