6

誰かがこれら2つの違いと、両方が必要なインスタンスを強調できますか?!

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

なぜこれら2つの類似した関数が異なるクラスにあるのですか?一方がawtにあり、もう一方がSwingにあることは知っていますが、同じことをしませんか?

4

3 に答える 3

14

SwingUtilities.invokeLater1.2で導入されたためにのみ存在しEventQueue.invokelaterますが、Swingは1.1で使用可能でした。JREでのSwingは、常にEventQueueバージョンと呼ばれています。swingall.jarコンポーネントを作成し、再描画時に保留中の操作を実行するハックがありました。

invokeLaterについてEventQueueです。この方法を直接使用することをお勧めします。SwingUtilitiesただのゴミ捨て場です。私は、SwingUtilities.invokeLaterおそらくSwingがAWTに依存していないという何らかの信念で、多くのことを使用しているのを見てきました。

于 2012-04-26T12:43:07.577 に答える
5

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

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

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

于 2012-04-26T12:40:24.903 に答える
4

javadocで説明されているように、それらは同じです。たとえば、invokeAndWaitメソッドjavadocからのコピーアンドペーストです。

1.3以降、このメソッドはjava.awt.EventQueue.invokeAndWait()の単なるカバーです。

したがって、それらを混在させることができ、使用するバージョンは関係ありません。

于 2012-04-26T12:38:19.653 に答える