Java SwingUtilities调用器的主要用途
我有这个代码片段Java SwingUtilities调用器的主要用途,java,swing,event-dispatch-thread,invokelater,swingutilities,Java,Swing,Event Dispatch Thread,Invokelater,Swingutilities,我有这个代码片段 import javax.swing.SwingUtilities; public class Client1 { public static void main( String[] args ) { SwingUtilities.invokeLater( new Runnable() { public void run() { //new MyWindow( "Bayog" );
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,有什么区别?假设
run
方法中的代码修改了UI元素。如果您试图从非UI线程执行该代码,它将失败:所有UI操作都必须在UI线程(也称为事件分派线程)中执行
SwingUtilities.invokeLater
允许您说“运行这段代码,但在UI线程中运行”。因此,对于仍希望更新UI的后台线程来说,这是非常好的。另一个选项是使用,但这并不总是合适的,因为它要求“知道”它需要使用UI线程的代码是设置后台线程的代码
有关更多详细信息,请参阅。假设
运行方法中的代码修改了UI元素。如果您试图从非UI线程执行该代码,它将失败:所有UI操作都必须在UI线程(也称为事件分派线程)中执行
SwingUtilities.invokeLater
允许您说“运行这段代码,但在UI线程中运行”。因此,对于仍希望更新UI的后台线程来说,这是非常好的。另一个选项是使用,但这并不总是合适的,因为它要求“知道”它需要使用UI线程的代码是设置后台线程的代码
有关更多详细信息,请参阅