作爲一個更大的應用程序的一部分,我正在編寫一個設置類,它收集並存儲用戶定義的設置。這個類是一個單例,並在應用程序啓動過程中被實例化。JFrame第一次實例化後無法工作?
爲了接受用戶輸入,兩個不同的GUI框架由內ConfigSettings.java insantiated,從一個公共靜態方法,selectSettings()。兩者都是JFrame的子類。下面是用於實例化文件選擇對話框的代碼:
private void selectFile() {
SelectFileGUI fileSelector = new SelectFileGUI();
fileSelector.setVisible(true);
synchronized(this) {
try {
wait();
} catch(Exception e) {
e.printStackTrace();
}
}
fileSelector.dispose();
}
當應用程序最初運行時,此工作正常。但是,稍後用戶可能會改變其選擇的設置,包括選擇新的源文件。這是通過再次調用selectSettings()完成的。
時遇到的問題是,任何後續嘗試實例化並顯示這些GUI組件又導致顯示一個新的JFrame,但具有灰色背景,也沒有按鈕或其它組件中。在調試時,我也無法直接創建SelectFileGUI的新實例。
什麼可能導致這種行爲?
是否有任何GUI組件是靜態的?如果是這樣,那麼在第一個JFrame離開後它們可能會消失。顯然,它並沒有消失,但當JFrame離開時它們可能已經關閉,所以它們不再處於可顯示狀態。 – 2010-02-02 01:02:41