Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SwingUtilities调用器的主要用途_Java_Swing_Event Dispatch Thread_Invokelater_Swingutilities - Fatal编程技术网

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线程的代码是设置后台线程的代码

有关更多详细信息,请参阅