注意事项:
与 UI、更新、创建的所有交互都应该在事件调度线程的上下文中完成。
javax.swing.Timer
Swing Timer 是一个特殊的计时器,它允许您设置一个定期回调,保证在 EDT 的上下文中执行
摇摆工人
SwingWorker是一种解决方案,旨在通过提供在后台运行代码的机制,同时提供简单(至少更简单)的机制来同步 EDT 内的 UI 更新,从而使 UI 开发人员的生活更轻松。
对于您的问题,我建议使用SwingWorker,因为您可以在后台暂停而不影响 UI 的响应能力
SwingWorker worker = new SwingWorker<Object, Object> {
public void doInBackground() throws Exception {
while (!loadingDone) {
Object data = loadMoreData();
publish(data);
}
// This only matter if you actually care about the result
// of what has being processed here...
return null;
}
public void process(List<Object> chunks) {
// Now in the UI...
}
}
查看...
更多细节...