【发布时间】:2009-02-04 15:33:17
【问题描述】:
如何在 Runnable 实例完成并让该实例更新该对话框上的进度条/消息的持续时间内显示不带按钮的模态 JDialog?
显然意大利面条式代码可能会起作用,但我正在寻找一种简洁的设计(如果存在的话)。
【问题讨论】:
标签: java multithreading swing
如何在 Runnable 实例完成并让该实例更新该对话框上的进度条/消息的持续时间内显示不带按钮的模态 JDialog?
显然意大利面条式代码可能会起作用,但我正在寻找一种简洁的设计(如果存在的话)。
【问题讨论】:
标签: java multithreading swing
您可能想查看ProgressMonitor。如果操作时间过长,它会自动弹出一个带有进度条的对话框;见How to Use Progress Monitors。
【讨论】:
查看以下 URL 中描述的项目: http://digilander.libero.it/carlmila/compmon/main.html
它是 Swing ProgressMonitor 的免费 Java 库替代品。
【讨论】:
使用带有全局实例的监视器类,并且您的代码会保持最新状态(我正在开始,我正在工作,我在 xxx%,我已经完成了)。
然后监视器可以决定显示对话框并使其保持最新状态。稍后,您可以简单地将对话框替换为状态栏中的进度条。使用监视器的接口(方法:start()、update()、end()、error()、isAborted()),这样你也可以用其他东西替换它。
如果有 end(),你可以将监视器延长到 start() 之后等待 500 毫秒,并且在这种情况下不显示对话框,等等。
Eclipse 就是这样做的,而且效果很好。
【讨论】: