我有一个用 Swing 实现的 UI。一个组件做了一些可能需要一些时间的工作,所以我使用SwingUtilities.invokeLater
. 但是,我正在阅读一些旧代码,并在以下位置找到了这个ActionListener
:
if (!SwingUtilities.isEventDispatchThread()) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
// code X
}
});
} else {
// code X
}
我认为这是有道理的,因为它与code X
EDT 是分开的。但是,我发现它很容易出错,因为我已经使用了几次,而且两次都忘记了这个else
零件。
问题是:SwingUtilities.isEventDispatchThread()
检查是否必要?或者我可以假设我不在 EDT 中并且总是使用invokeLater
?
非常感谢。