Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.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 EventQueue.invokeLater vrs SwingUtilities.invokeLater_Java_Swing_Awt_Eventqueue_Swingutilities - Fatal编程技术网

Java EventQueue.invokeLater vrs SwingUtilities.invokeLater

Java EventQueue.invokeLater vrs SwingUtilities.invokeLater,java,swing,awt,eventqueue,swingutilities,Java,Swing,Awt,Eventqueue,Swingutilities,有人能强调这两者之间的区别吗?这两个实例都是必需的 我有一个应用程序,它可以同时使用这两种方法,但我想知道其中一种是否比另一种更好。显然,它们都接受可运行对象,因此对我来说——我想我可以使用我喜欢的对象 为什么这两个相似的函数在不同的类中?我知道一个在awt中,另一个在Swing中,但它们不是做同样的事情吗?如javadoc中所述,它们是相同的,例如,来自invokeAndWait方法javadoc的复制粘贴 从1.3开始,这个方法只是java.awt.EventQueue.invokeAndW

有人能强调这两者之间的区别吗?这两个实例都是必需的

我有一个应用程序,它可以同时使用这两种方法,但我想知道其中一种是否比另一种更好。显然,它们都接受
可运行对象
,因此对我来说——我想我可以使用我喜欢的对象


为什么这两个相似的函数在不同的类中?我知道一个在awt中,另一个在Swing中,但它们不是做同样的事情吗?

如javadoc中所述,它们是相同的,例如,来自
invokeAndWait
方法javadoc的复制粘贴

从1.3开始,这个方法只是java.awt.EventQueue.invokeAndWait()的一个封面


因此,您可以将它们混合使用,而不管您使用哪个版本。

实际上SwingUtilities#invokeLater(Runnable doRun)的代码是:

public static void invokeLater(Runnable doRun) {
    EventQueue.invokeLater(doRun);
}

所以这是完全一样的事情

SwingUtilities.invokeLater
的存在只是因为
EventQueue.invokeLater
是在1.2中引入的,但Swing在1.1中可用。JRE中的Swing总是调用
EventQueue
版本
swingall.jar
在创建组件并对重绘执行挂起操作时遇到了一些问题

invokeLater
是关于
EventQueue
的。我建议直接使用这个方法
SwingUtilities
只是一个垃圾场。我见过很多使用SwingUtilities.invokeLater的例子,大概是因为我相信Swing不依赖于AWT。

可能与AWT重复