2010-01-20 143 views
0

我有一個獨立於整個項目其餘部分的小對話框。有幾個線程可以調用這個對話框。在java中獲取當前活動的模態對話框

問題是顯示當前任務進度的模態JDialog。我的對話框將在進度對話框後面打開。沒有可能得到這個對話框。

是否有可能獲得當前活動對話框,以便我可以將它們用作我的新對話框的父項?

+0

「有幾個線程可以調用此對話框。」 - 當然只有Event Dispatch Thread應該調用這個對話框(假設你正在使用Swing)? – Adamski 2010-01-20 09:47:27

+0

進度對話框與SwingWorker協同工作。問題是第一個調用可能來自SwingWorker的任務,另一個來自另一個位置(不可定義,因爲創建的對話框將接受SSL證書,並且可能在每次建立SSL連接時發生。) 但是,對了,我不得不重構一些代碼以允許任務獲得進度對話框等。我想現在我有一個工作版本。謝謝。 – 2010-01-20 10:14:05

回答

0

的幾點:

幽州多個線程可以潛在地調用該對話框,而對於一個Swing應用程序,你應該確保在事件指派線程是啓動該對話框中的唯一線索。

如果遵循此約束,則更有可能您將引用已顯示的進度對話框,因此可以將其用作對話框父對象。

這聽起來像你可能需要重新構建你的應用程序。通常,您可能會調用SwingWorker來執行後臺任務,這會將進度「發佈」回Swing線程,然後更新進度對話框。

另一個提示:您可以使用toFront()方法Window帶來一個對話框到屏幕的前端,雖然這似乎不是你的問題的關鍵。