Bob*_*r02 10 java swing event-dispatch-thread
关于Swing和使用EDT进行GUI更新,我有几个问题.我刚刚开始阅读这些内容,所以我是这个领域的初学者:
SwingUtilities.invokeLater我们将它排入GUI更新任务的当前队列对吗?SwingWorker究竟是如何确保done()在EDT上运行该方法的?它设置以下代码:
future = new FutureTask<T>(callable) {
@Override
protected void done() {
doneEDT();
setState(StateValue.DONE);
}
};
Run Code Online (Sandbox Code Playgroud)所以我想知道FutureTask是否以某种方式确保invokeLater被调用?
谢谢你的所有答案.
Rob*_*bin 16
RepaintManager来检测大多数违规行为:请参阅此文章.actionPerformed则相应的Action或ActionListener将在EDT上调用.invokeLater调用只是Runnable在队列末尾添加.invokeLater稍后使用第二次将Runnable在先前安排的之后添加新的Runnable.看看代码 doneEDT
private void doneEDT() {
Runnable doDone =
new Runnable() {
public void run() {
done();
}
};
if (SwingUtilities.isEventDispatchThread()) {
doDone.run();
} else {
doSubmit.add(doDone);
}
}
Run Code Online (Sandbox Code Playgroud)doneEDT()方法具有以下注释:在EDT上完成调用.| 归档时间: |
|
| 查看次数: |
5564 次 |
| 最近记录: |