【问题标题】:Close a java modal JDialog from within the owner class (a JFrame)从所有者类(一个 JFrame)中关闭一个 java modal JDialog
【发布时间】:2012-05-18 04:16:17
【问题描述】:

我对这个问题感觉有点不好,因为我认为这可能不是 应该使用 JDialog 的方式,但无论如何:

我有一个非常简单的 JDialog,它只包含一个标签,我想显示它 在应用程序运行的任务只运行了几次的情况下 主要摆动线程上的秒数。对话框必须是模型以确保 短阻塞任务执行时,用户无法单击主 GUI 上的任何内容 执行。任务完成后,模态对话框应该在没有的情况下被处理掉 任何用户交互......这似乎不适用于模态对话框,因为 一旦调用了 setVisible(true) 方法,执行似乎停止了,我不能 弄清楚如何在没有用户交互的情况下从所有者方面关闭它...

非常感谢有关如何实施此类阻止的帮助或建议 以不同的方式对话。

【问题讨论】:

  • 你为什么不使用 SwingX' BusyLabelBusyPainter 来代替?您可以将带有painter 的标签或组件放在类窗格上,并在操作完成后将其移除。或者更好的是,使用提供setWaitPaneVisible(...) 方法的JXFrame
  • 如果您能以某种方式将此任务带到您的JDialog 相关类并在将其设置为visible(true) 后从他们那里调用它,可能它可以工作,尽管很难说没有任何发布代码部分:(
  • 感谢您提示我使用 SwingX - 我目前正在查看 BusyLabel API,看起来我可以将它用于我的目的 - 很抱歉没有发布示例代码 - 我希望已经描述了一般问题足以说明我试图做什么

标签: java swing modal-dialog jdialog


【解决方案1】:

是的,如果您在 UI 线程上显示模式对话框,您的执行将停止。为了克服这个问题,您可以使用 SwingWorker 甚至只是创建一个新线程

【讨论】:

    猜你喜欢
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    • 2010-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多