2010-01-20 84 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带来一个对话框到屏幕的前端,虽然这似乎不是你的问题的关键。