![]() |
1
3
嘿,您可以尝试并实现观察者模式,让相关方订阅工作线程(java.util.observable或类似的扩展)或管理观察者的另一个类。 您可以使用java.util.observer和java.util.observable 或者自己滚。 实现观察者模式的一些接口的简单示例:
|
![]() |
2
1
为什么不使用回调?启动后台任务时,将带有回调函数的对象传递给该任务,并让该任务以这种方式报告进度。没有任何相关的UI,您不需要更改线程来完成此操作。 |
![]() |
3
0
阿德里安和爱德华大帝的回答都是很好的选择。这完全取决于您希望“其他代码”如何使用状态更新。第三种选择是使用消息队列,后台线程将定期状态写入其中。一个真正通用的版本将使用JMS。 |
![]() |
4
0
我为此设计了一个简单的界面:
用法如下:
以及一个通用的实现,它应该是线程安全的:
这可以扩展到支持取消等等。 |
![]() |
DCzo · 等待SwingWorker完成后再执行另一个 7 年前 |
![]() |
David8988 · 我需要收集swingWorker线程吗? 7 年前 |
![]() |
brienna · 为什么我的下载进度条会多次触发同一事件? 7 年前 |
![]() |
A. Wali · 使用SwingWorker显示加载动画 8 年前 |
![]() |
Andrei Filipchyk · 带有延迟的“请稍候”消息 9 年前 |
![]() |
user3045798 · 即使触发了正确的事件,GUI也没有更新当前信息 10 年前 |
![]() |
usama8800 · 获取网页源代码而不冻结UI 10 年前 |