2 回答

TA貢獻1865條經驗 獲得超7個贊
這個問題很簡單
1.首先 一個窗體 如果dispose()以后,如果,用窗體對象.setVisible(true);能夠顯示的話,
說明你沒設置窗體的默認關閉方式 。具體你可以看看 setDefaultCloseOperation();這個方法的API說明 。 如果,你沒有設置窗體關閉方式 。 點擊關閉窗體,或是程序調用dispose() 內部實現方式,都只是把窗體隱藏 == setVisible (false);
2. 構造方法,只能是通過 new 窗體對象來調用 。
引申上面的問題 。 如果你改變窗體默認關閉方式 手動設置 setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
在窗體里 調用 dispose(); 就會完全關閉窗體 ,并釋放窗體資源 (不能通過setVisible重新顯示)
3. 這個很簡單 。 你考慮單利模式 就行了 。把窗體類做成單利模式 。
單利模式的意義就是 ,在程序的運行時,類實例只會存在一個。 也就是說,只要你沒釋放這個類資源 。 它只存在一個。
私有構造方法。。
定義靜態內部實例。
提供公有靜態 創建并返回實例的方法
以下資料,可以掠過。 以下為 setDefaultCloseOperation ()方法API解釋。
-----------------------------------------------------------------------------------
DO_NOTHING_ON_CLOSE(在 WindowConstants 中定義):不執行任何操作;要求程序在已注冊的 WindowListener 對象的 windowClosing 方法中處理該操作。
HIDE_ON_CLOSE(在 WindowConstants 中定義):調用任意已注冊的 WindowListener 對象后自動隱藏該窗體。
DISPOSE_ON_CLOSE(在 WindowConstants 中定義):調用任意已注冊 WindowListener 的對象后自動隱藏并釋放該窗體。
EXIT_ON_CLOSE(在 JFrame 中定義):

TA貢獻1719條經驗 獲得超6個贊
setVisible()可以重復調用!
不用那么麻煩,用JDialog就可以,利用JDialog對象的setModal(true)方法就可以達到你要的效果,而且你也不用考慮dispose,因為它非常好用
添加回答
舉報