2012-04-26 28 views
6

¿Alguien puede resaltar las diferencias entre estos dos y las instancias necesarias?EventQueue.invokeLater vrs SwingUtilities.invokeLater

Tengo una aplicación que usa ambos de manera interactiva, pero quiero saber si uno es mejor que el otro. Obviamente, ambos aceptan Runnable object, y para mí, creo que puedo usar el que me gusta.

¿Por qué estas dos funciones similares en diferentes clases? Sé que uno está en awt y el otro Swing, pero ¿no hacen lo mismo?

+1

posible duplicado de [SwingUtilities.invokeLater() vs EventQueue.invokeLater()] (http://stackoverflow.com/questions/8847083/swingutilities-invokelater-vs-eventqueue-invokelater) – xmedeko

Respuesta

12

SwingUtilities.invokeLater existe solo porque EventQueue.invokelater se introdujo en 1.2, pero Swing estaba disponible para 1.1. Swing en el JRE siempre acaba de llamar a la versión EventQueue. swingall.jar tenía algún truco donde creaba un componente, y ejecutaba operaciones pendientes en repintados.

invokeLater es sobre EventQueue. Sugiero usar el método directamente. SwingUtilities es solo un vertedero. He visto muchas cosas usando SwingUtilities.invokeLater presumiblemente con algún tipo de creencia de que Swing no depende de AWT.

4

Según lo descrito en el javadoc, son lo mismo, p. un copiar y pegar desde el javadoc invokeAndWait método

A partir de 1.3 este método es sólo una cubierta para java.awt.EventQueue.invokeAndWait()

para que pueda mezclar ellos y no importa qué versión usas

5

En realidad el código de SwingUtilities # invokeLater (Ejecutable doRun) es:

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

Por lo tanto, es exactamente lo mismo!

Cuestiones relacionadas