2012-04-26 9 views
6

誰かがこの2つの違いを強調して、インスタンスが必要ですか?EventQueue.invokeLater vrs SwingUtilities.invokeLater

私は、両方を使い分けるアプリケーションを持っていますが、どちらかが他よりも優れているかどうかを知りたいと思っています。明らかに彼らはどちらもRunnable objectを受け入れます。私のためには、私が好きなものを使うことができると思います。

なぜこれらの2つの機能は異なるクラスにありますか?私は誰もがawtと他のスイングにあることを知っているが、彼らは同じことをしないのですか?

+1

可能な複製[SwingUtilities.invokeLater()vs EventQueue.invokeLater()](http://stackoverflow.com/questions/8847083/swingutilities-invokelater-vs-eventqueue-invokelater) – xmedeko

答えて

12

SwingUtilities.invokeLaterが存在するのは、EventQueue.invokelaterが1.2に導入されたためですが、Swingは1.1で利用可能でした。 JREのスイングは常にちょうどEventQueueバージョンと呼ばれています。 swingall.jarは、コンポーネントを作成したハックを持ち、再描画時に保留中の操作を実行しました。

invokeLaterは、約EventQueueです。このメソッドを直接使用することをお勧めします。 SwingUtilitiesは投棄地です。私はおそらくSwingUtilities.invokeLaterを使って多くのことを見てきましたが、SwingはAWTに依存していないと思われます。

4

javadocに記載されているように、それらは同じです。 invokeAndWaitメソッドのjavadoc

からのコピー&ペーストこの方法はjava.awt.EventQueue.invokeAndWaitのためだけのカバー(ある1.3のとおり)

だから、それらを混在させることができ、それは問題ではありません。あなたが使っているバージョン。

5

SwingUtilities#invokeLater(RunnableをdoRun)の実際のコードは次のとおりです。

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

は、だから、まったく同じことです!

関連する問題