2012-04-26 10 views
6

Qualcuno può evidenziare le differenze tra queste due e le istanze sono necessarie entrambe ?!EventQueue.invokeLater vrs SwingUtilities.invokeLater

Possiedo un'applicazione che utilizza entrambi i dati, ma voglio sapere se uno è migliore dell'altro. Ovviamente entrambi accettano lo Runnable object, e così per me - penso di poter usare quello che mi piace.

Perché queste due funzioni simili in classi diverse? So che uno è in Walt e l'altro Swing, ma non fanno la stessa cosa?

+1

possibile duplicato di [SwingUtilities.invokeLater() vs EventQueue.invokeLater()] (http://stackoverflow.com/questions/8847083/swingutilities-invokelater-vs-eventqueue-invokelater) – xmedeko

risposta

12

SwingUtilities.invokeLater esiste solo perché EventQueue.invokelater è stato introdotto in 1.2, ma Swing era disponibile per 1.1. Swing in the JRE ha sempre chiamato la versione EventQueue. swingall.jar ha avuto qualche hack in cui ha creato un componente ed eseguito le operazioni in sospeso su ripetizioni.

invokeLater è circa il EventQueue. Suggerisco di usare il metodo direttamente. SwingUtilities è solo una discarica. Ho visto molto usando SwingUtilities.invokeLater presumibilmente in una sorta di convinzione che lo Swing non dipende da AWT.

4

Come descritto nella javadoc, sono uguali, ad es. un copia-incolla dal invokeAndWait metodo di javadoc

A partire dal 1.3 questo metodo è solo una copertura per java.awt.EventQueue.invokeAndWait()

in modo da poterli mescolare e non importa quale versione usi.

5

In realtà il codice di SwingUtilities # invokeLater (Runnable doRun) è:

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

Quindi è esattamente la stessa cosa!

Problemi correlati