有人可以突出這兩者之間的差異,並且這兩個實例都是必需的嗎?!EventQueue.invokeLater vrs SwingUtilities.invokeLater
我有一個應用程序,它使用兩個interachably,但想知道如果一個比另一個更好。顯然,他們都接受Runnable object
,所以對我來說 - 我想我可以使用我喜歡的一個。
爲什麼這兩個類似的函數在不同的類中?我知道一個人在awt和另一個是Swing,但他們不是做同樣的事情嗎?
有人可以突出這兩者之間的差異,並且這兩個實例都是必需的嗎?!EventQueue.invokeLater vrs SwingUtilities.invokeLater
我有一個應用程序,它使用兩個interachably,但想知道如果一個比另一個更好。顯然,他們都接受Runnable object
,所以對我來說 - 我想我可以使用我喜歡的一個。
爲什麼這兩個類似的函數在不同的類中?我知道一個人在awt和另一個是Swing,但他們不是做同樣的事情嗎?
SwingUtilities.invokeLater
只存在,因爲EventQueue.invokelater
在1.2中引入,但Swing可用於1.1。 JRE中的swing一直稱爲EventQueue
版本。 swingall.jar
有一些破解,它創建了一個組件,並執行重繪的掛起操作。
invokeLater
約爲EventQueue
。我建議直接使用該方法。 SwingUtilities
只是一個傾倒場。我已經看到很多使用SwingUtilities.invokeLater
大概在某種信仰Swing不依賴於AWT。
如javadoc中所述,它們是相同的,例如,從invokeAndWait
方法的javadoc一個複製粘貼
從1.3版本開始,此方法只對了java.awt.EventQueue.invokeAndWait()覆蓋
所以,你可以將它們混合並不要緊你使用哪個版本。
其實SwingUtilities類#的invokeLater(Runnable接口doRun)的代碼是:
public static void invokeLater(Runnable doRun) {
EventQueue.invokeLater(doRun);
}
所以這是完全一樣的東西!
[SwingUtilities.invokeLater()vs EventQueue.invokeLater()]的可能重複(http://stackoverflow.com/questions/8847083/swingutilities-invokelater-vs-eventqueue-invokelater) – xmedeko 2013-10-15 06:09:34