有人可以强调这两者之间的差异以及两者都是必需的实例吗?!
我有一个应用程序可以同时使用两者,但想知道一个是否比另一个更好。显然他们都接受Runnable object
,所以对我来说 - 我想我可以使用我喜欢的那个。
为什么这两个相似的函数在不同的类中?我知道一个是awt,另一个是Swing,但他们不做同样的事情吗?
有人可以强调这两者之间的差异以及两者都是必需的实例吗?!
我有一个应用程序可以同时使用两者,但想知道一个是否比另一个更好。显然他们都接受Runnable object
,所以对我来说 - 我想我可以使用我喜欢的那个。
为什么这两个相似的函数在不同的类中?我知道一个是awt,另一个是Swing,但他们不做同样的事情吗?
SwingUtilities.invokeLater
存在只是因为EventQueue.invokelater
在 1.2 中引入,但 Swing 可用于 1.1。Swing 在 JRE 中一直只调用EventQueue
版本。swingall.jar
在创建组件并在重绘时执行挂起的操作时进行了一些破解。
invokeLater
是关于EventQueue
。我建议直接使用该方法。SwingUtilities
只是一个垃圾场。我已经看到很多使用SwingUtilities.invokeLater
大概是在某种信念摇摆不依赖于 AWT。
实际上SwingUtilities#invokeLater(Runnable doRun)的代码是:
public static void invokeLater(Runnable doRun) {
EventQueue.invokeLater(doRun);
}
所以这完全一样!
As described in the javadoc, they are the same, e.g. a copy-paste from the invokeAndWait
method javadoc
As of 1.3 this method is just a cover for java.awt.EventQueue.invokeAndWait()
So you can mix them and it does not matter which version you use.