相关疑难解决方法(0)

检查线是否需要EDT?

我有一个用Swing实现的UI.一个组件做了一些可能需要一些时间的工作,所以我使用了SwingUtilities.invokeLater.但是,我正在阅读一些旧代码并在以下内容中找到ActionListener:

if (!SwingUtilities.isEventDispatchThread()) {
    SwingUtilities.invokeLater(new Runnable() {
         public void run() {
             // code X
         }
    });
} else {
   // code X
}
Run Code Online (Sandbox Code Playgroud)

我认为它有意义,因为它与code XEDT 分开.但是,我发现它很容易出错,因为我已经使用了几次,而且两次都忘记了这else部分.

问题是:SwingUtilities.isEventDispatchThread()检查是否必要?或者我可以假设我不在EDT并且总是使用invokeLater

非常感谢.

java events swing event-dispatch-thread

4
推荐指数
1
解决办法
4948
查看次数

标签 统计

event-dispatch-thread ×1

events ×1

java ×1

swing ×1