2011-03-16 40 views
0

我有一個帶有JPanel的主應用程序窗口(JFrame)。在JPanel上,我有一些按鈕。點擊其中一個按鈕後,我創建了JDialog窗口,用戶可以在其中選擇兩個選項:「執行」或「取消」。點擊「執行」後,對話框關閉,然後創建一些進度窗口(另一個JDialog)和進度條。在進度窗口中,我執行長期任務的揮舞者。任務完成後,我會顯示有關任務結果(「成功」或「失敗」)的消息對話框(JOptionPane.showOptionDialog)。此任務的結果決定主應用程序窗口的狀態(我更改按鈕上的標籤,例如「登錄」/「註銷」)。我怎樣才能將這個擺動工具的結果(在方法done()中)發送到主應用程序窗口以刷新主應用程序窗口的狀態(更改按鈕的標籤)?我是否需要某種控制器,可能是偵聽器或只需要引用主應用程序窗口?Java中的框架,窗口和組件之間的通信Swing

謝謝你在前進,SEISHIN

回答

5

傳遞到主窗口下的構造函數棧你想有通知它的任何對象的引用,然後添加一個方法到主窗口收到這樣的通知。

例如,在主窗口的JFrame:

public void taskComplete(boolean succeeded) { ... } 
... 
JDialog dialog = new JDialog(..., this); 

然後在對話框的構造保存參考你的主窗口,當任務完成後,調用mainWindow.taskComplete(true/false)