对于java swing组件,扩展和覆盖它们的构造函数和调用以确保它们总是在事件派发线程上执行是一个好主意吗?
@Override
public void setBackground(final Color c) {
if(SwingUtilities.isEventDispatchThread()) {
super.setBackground(c);
} else {
//Force it to run on EDT through invokeAndWait or invokeLater
}
}
另外(愚蠢的问题);如果我在EDT中运行一个新的Runnable,它的运行调用是否正常执行(传统的自上而下)?
@Override
public void actionPerformed(ActionEvent e) {
Runnable r = new Runnable() {
public void run() {
// Update buttons
}
}
r.run(); // Just runs
}