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重复