【问题标题】:Get the current active modal dialog in java在java中获取当前活动的模态对话框
【发布时间】:2010-01-20 09:38:52
【问题描述】:

我有一个独立于整个项目其余部分的小对话框。有多个线程可以调用此对话框。

问题是显示当前任务进度的模态 JDialog。我的对话框将在进度对话框后面打开。不可能得到这个对话框。

是否可以获取当前活动对话框,以便我可以将它们用作新对话框的父级?

【问题讨论】:

  • "有几个线程可以调用这个对话框。" - 当然只有事件调度线程应该调用这个对话框(假设你使用的是 Swing)?
  • 进度对话框与 SwingWorker 一起使用。问题是第一个调用可能来自 SwingWorker 的任务,而第二个调用可能来自另一个位置(无法定义,因为创建的对话框是接受 SSL 证书,并且每次建立 SSL 连接时都可能发生。)但你是对的,我不得不重构一些代码以允许任务获得进度对话框等。我想现在我得到了一个工作版本。谢谢。

标签: java dialog modal-dialog


【解决方案1】:

几点:

您声明多个线程可能调用此对话框,而对于 Swing 应用程序,您应确保 Event Dispatch Thread 是启动此对话框的唯一线程。

如果您遵循此约束,则更有可能引用已显示的进度对话框,因此可以将其用作对话框父级。

听起来您可能需要重新架构您的应用程序。通常,您可能会调用 SwingWorker 来执行后台任务,这会将进度“发布”回 Swing 线程,然后更新进度对话框。

另一个提示:您可以使用Window 上的toFront() 方法将对话框带到屏幕前面,尽管这似乎不是问题的症结。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    相关资源
    最近更新 更多