EventQueue.invokeLater VRS SwingUtilities.invokeLa

2019-09-16 18:39发布

有人可以突出这两个又都是所需的实例之间的差异?

我有同时使用intercheably的应用程序,但要知道,如果一个比另一个更好。 显然,他们都接受Runnable object ,所以我-我想我可以用我喜欢哪一个。

为什么在不同的班级这两个类似的功能? 我知道一个是在AWT和其他Swing,但不要他们做同样的事情?

Answer 1:

SwingUtilities.invokeLater存在,只是因为EventQueue.invokelater在1.2推出,但秋千是可供1.1。 摆在JRE始终只是叫EventQueue版本。 swingall.jar有一些黑客在那里创建一个组件,并执行等候重绘操作。

invokeLater是关于EventQueue 。 我建议直接使用方法。 SwingUtilities只是一个垃圾场。 我一直在使用看过很多SwingUtilities.invokeLater某种信仰的Swing是不依赖于AWT大概。



Answer 2:

其实SwingUtilities类#的invokeLater(Runnable接口doRun)的代码是:

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

因此,它是完全一样的东西!



Answer 3:

如在Javadoc描述的,它们是相同的,例如,从一个复制粘贴invokeAndWait方法的Javadoc

作为1.3,此方法只覆盖了java.awt.EventQueue.invokeAndWait()

所以,你可以将它们混合,并不要紧,你使用哪个版本。



文章来源: EventQueue.invokeLater vrs SwingUtilities.invokeLater