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 次 |
最近记录: |