我有这个代码片段
import javax.swing.SwingUtilities;
public class Client1 {
public static void main( String[] args ) {
SwingUtilities.invokeLater( new Runnable() {
public void run() {
//new MyWindow( "Bayog" );
new MyWindowV2( "Bayog" );
}
} );
}
}如果我不使用SwingUtilities,有什么区别?
发布于 2014-07-27 15:25:36
假设run方法中的代码修改了一个UI元素。如果您尝试从非UI线程执行代码,它将失败:所有UI操作都必须在UI线程(也称为事件分派器线程)中执行。
SwingUtilities.invokeLater允许你说“运行这段代码,但是在UI线程中运行”。因此,对于仍然想要更新UI的后台线程来说,这是非常好的。另一种选择是使用SwingWorker,但这并不总是合适的,因为它要求“知道”它需要使用UI线程的代码是设置后台线程的代码。
有关更多详细信息,请参阅Swing Threading Tutorial。
https://stackoverflow.com/questions/24978799
复制相似问题