【问题标题】:Create Modal JDialog while things are processing在处理事情时创建模态 JDialog
【发布时间】:2011-07-25 01:20:43
【问题描述】:

当一个任务正在处理超过 3 秒后才显示时,如何创建一个模态 JDialog 说“正在加载”?

【问题讨论】:

  • 如果处理发生在与 UI 线程分开的线程中,那就很简单了。这是最好的方法。否则,您将在主 UI 线程中进行处理,并且不得不启动一个单独的 UI 线程来解决您的架构问题。
  • 是的,任务在单独的线程中运行。

标签: java swing concurrency jdialog jprogressbar


【解决方案1】:

为了扩展 Paul 的答案,SwingWorker 可以很好地运行您的后台任务。然后,您可以显示进度或进度监视器,教程可以在这里为您提供帮助:How to Use Progress Bars

【讨论】:

  • +1 悬停:我的回答有点懒惰,只是将其降级为评论。
【解决方案2】:

如果任务是加载InputStream,请参阅ProgressMonitorInputStream

例如(未经测试)

ProgressMonitorInputStream pmis = new ProgressMonitorInputStream(
    parentComponent, message, inputStream);
ProgressMonitor pm = pmis.getProgressMonitor();
pm.setMillisToPopup(millisToPopup);

有必要在Thread 中加载InputStream 以避免阻塞EDT。

【讨论】:

    猜你喜欢
    • 2012-06-26
    • 2013-11-06
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    相关资源
    最近更新 更多