EventQueue.invokeLater vrs SwingUtilities.invokeLater

Bit*_*map 6 java swing awt eventqueue swingutilities

有人可以突出显示这两者之间的差异吗?两者都是必需的?!

我有一个应用程序,它同时使用,但想知道一个是否优于另一个.显然他们都接受了Runnable object,所以对我来说 - 我想我可以使用我喜欢的那个.

为什么这两个类似的功能在不同的类中?我知道有一个在awt和另一个Swing,但他们不是做同样的事情吗?

Tom*_*ine 12

SwingUtilities.invokeLater存在只是因为EventQueue.invokelater在1.2中引入,但Swing可用于1.1.JRE中的Swing始终只调用该EventQueue版本.swingall.jar有一些黑客在它创建一个组件,并在重绘上执行待处理操作.

invokeLater是关于EventQueue.我建议直接使用该方法.SwingUtilities只是一个倾倒场.我已经看到很多使用SwingUtilities.invokeLater大概是因为Swing并不依赖于AWT.


ala*_*inm 5

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

public static void invokeLater(Runnable doRun) {
    EventQueue.invokeLater(doRun);
}
Run Code Online (Sandbox Code Playgroud)

所以这是完全一样的!