有人可以突出显示这两者之间的差异吗?两者都是必需的?!
我有一个应用程序,它同时使用了一个,但想知道一个是否优于另一个。显然他们都接受Runnable object
,所以对我来说 - 我想我可以使用我喜欢的那个。
为什么这两个类似的功能在不同的类中?我知道有一个在awt和另一个Swing,但是他们不做同样的事情吗?
答案 0 :(得分:12)
SwingUtilities.invokeLater
的存在只是因为1.2中引入了EventQueue.invokelater
,但是Swing可用于1.1。 JRE中的Swing始终只调用EventQueue
版本。 swingall.jar
在创建组件时有一些黑客攻击,并在重新绘制时执行了待处理的操作。
invokeLater
与EventQueue
有关。我建议直接使用该方法。 SwingUtilities
只是一个倾销场。我已经看到很多人使用SwingUtilities.invokeLater
大概是因为Swing并不依赖于AWT。
答案 1 :(得分:5)
实际上 SwingUtilities#invokeLater(Runnable doRun)的代码是:
public static void invokeLater(Runnable doRun) {
EventQueue.invokeLater(doRun);
}
所以它完全一样!
答案 2 :(得分:4)
如javadoc中所述,它们是相同的,例如来自invokeAndWait
方法javadoc
从1.3开始,这个方法只是java.awt.EventQueue.invokeAndWait()的封面
所以你可以把它们混合起来,你使用哪个版本并不重要。