Event dispatching thread: Difference between revisions

Content deleted Content added
JackieBot (talk | contribs)
MoreNet (talk | contribs)
No edit summary
Line 33:
Another solution for executing code in the event dispatching thread is using the ''[[SwingWorker|worker design pattern]]''. The <code>[[SwingWorker|javax.swing.SwingWorker]]</code> class, developed by [[Sun Microsystems]], is an implementation of the worker design pattern, and as of Java 6 is part of standard Swing distribution. The open source project [http://foxtrot.sourceforge.net/ Foxtrot] provides another synchronous execution solution similar to <code>SwingWorker</code>.
 
===Samples===
Equivalents
<source lang="java">
SwingWorker<Document, Void> worker = new SwingWorker<Document, Void>() {
public Document doInBackground() throws IOException {
return loadXML(); // heavy task
}
public void done() {
try {
Document doc = get();
display(doc);
} catch (Exception ex) {
ex.printStackTrace();
}
}
};
worker.execute();
</source>
 
If you use [[Groovy (programming language)|Groovy]] and <code>groovy.swing.SwingBuilder</code>, you can use <code>doLater()</code>, <code>doOutside()</code>, and <code>edt()</code>. Then you can write it more simple like this.
 
<source lang="groovy">
doOutside {
def doc = loadXML() // heavy task
edt { display(doc) }
}
</source>
 
===Equivalents===
* <code>System.ComponentModel.BackgroundWorker</code> - [[.NET Framework]]
* <code>flash.system.Worker</code> - [[Adobe Flash]]