bco*_*lan 3 java swing awt event-dispatch-thread
我有一个关于'事件派遣线程'的问题.我有一个Main类,也是一个JFrame.它初始化代码中的其余组件,其中一些不涉及Swing,其中一些涉及.使用EDT简单地初始化Main类就足够了吗?...
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
new Main();
}
});
}
Run Code Online (Sandbox Code Playgroud)
这样一切都将在Event Dispatcher线程上运行.
这通常就足够了,直到您开始使用后台线程进行计算,数据采集等.然后,您需要在更改摆动组件或其模型之前开始小心验证您是否在EDT上.
你可以用以下方法测试你是否在EDT上执行:
if (SwingUtilities.isEventDispatchThread()) {
// Yes, manipulate swing components
} else {
// No, use invokeLater() to schedule work on the EDT
}
Run Code Online (Sandbox Code Playgroud)
另外,请参阅SwingWorker类,了解有关如何将工作交给后台线程并在EDT上处理结果的详细信息
| 归档时间: |
|
| 查看次数: |
3631 次 |
| 最近记录: |