Swing中的进度对话框

时间:2009-02-04 15:33:18

标签: java multithreading swing

如何在JDialog实例完成并让该实例更新该对话框上的进度条/消息的过程中,如何创建没有按钮的模态Runnable

显然,意大利面条代码可能有效,但如果存在,我正在寻找一个干净的设计。

3 个答案:

答案 0 :(得分:8)

您可能需要查看ProgressMonitor。如果操作需要很长时间,它会自动弹出一个带进度条的对话框;见How to Use Progress Monitors

答案 1 :(得分:2)

查看以下URL中描述的项目: http://digilander.libero.it/carlmila/compmon/main.html

它是Swing ProgressMonitor的免费Java库替代品。

答案 2 :(得分:1)

使用一个全局实例的监视器类,你的代码保持最新(我开始,我正在工作,我是xxx%,我已经完成了)。

然后,监视器可以决定显示对话框并使其保持最新状态。稍后,您可以简单地使用状态栏中的进度条替换对话框。使用监视器的接口(方法:start(),update(),end(),error(),isAborted()),这样你就可以用其他东西替换它。

如果有结束()并且在这种情况下不显示对话框等,您可以将显示器扩展到start()后500ms等等。

Eclipse就是这样做的,而且效果很好。