<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.theeggeadventure.com/wikimedia/index.php?action=history&amp;feed=atom&amp;title=SwingWorker_Example</id>
	<title>SwingWorker Example - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.theeggeadventure.com/wikimedia/index.php?action=history&amp;feed=atom&amp;title=SwingWorker_Example"/>
	<link rel="alternate" type="text/html" href="https://www.theeggeadventure.com/wikimedia/index.php?title=SwingWorker_Example&amp;action=history"/>
	<updated>2026-06-06T10:11:34Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.0-beta</generator>
	<entry>
		<id>https://www.theeggeadventure.com/wikimedia/index.php?title=SwingWorker_Example&amp;diff=2041&amp;oldid=prev</id>
		<title>Egge at 21:33, 12 October 2008</title>
		<link rel="alternate" type="text/html" href="https://www.theeggeadventure.com/wikimedia/index.php?title=SwingWorker_Example&amp;diff=2041&amp;oldid=prev"/>
		<updated>2008-10-12T21:33:51Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 21:33, 12 October 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Here&amp;#039;s a basic example of how to use a SwingWorker for a long running background task.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Here&amp;#039;s a basic example of how to use a SwingWorker for a long running background task.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Idle&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=== &lt;/ins&gt;Idle &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Image:lucky1.PNG]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Image:lucky1.PNG]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Running&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=== &lt;/ins&gt;Running &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Image:lucky2.PNG]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Image:lucky2.PNG]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key egge_wikimedia-mw_:diff:1.41:old-2038:rev-2041:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Egge</name></author>
	</entry>
	<entry>
		<id>https://www.theeggeadventure.com/wikimedia/index.php?title=SwingWorker_Example&amp;diff=2038&amp;oldid=prev</id>
		<title>Egge: New page: Here&#039;s a basic example of how to use a SwingWorker for a long running background task.  Idle Image:lucky1.PNG  Running Image:lucky2.PNG  &lt;geshi lang=&quot;java5&quot;&gt; package swingworker;  ...</title>
		<link rel="alternate" type="text/html" href="https://www.theeggeadventure.com/wikimedia/index.php?title=SwingWorker_Example&amp;diff=2038&amp;oldid=prev"/>
		<updated>2008-10-10T06:53:50Z</updated>

		<summary type="html">&lt;p&gt;New page: Here&amp;#039;s a basic example of how to use a SwingWorker for a long running background task.  Idle &lt;a href=&quot;/wikimedia/index.php/File:Lucky1.PNG&quot; title=&quot;File:Lucky1.PNG&quot;&gt;Image:lucky1.PNG&lt;/a&gt;  Running &lt;a href=&quot;/wikimedia/index.php/File:Lucky2.PNG&quot; title=&quot;File:Lucky2.PNG&quot;&gt;Image:lucky2.PNG&lt;/a&gt;  &amp;lt;geshi lang=&amp;quot;java5&amp;quot;&amp;gt; package swingworker;  ...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Here&amp;#039;s a basic example of how to use a SwingWorker for a long running background task.&lt;br /&gt;
&lt;br /&gt;
Idle&lt;br /&gt;
[[Image:lucky1.PNG]]&lt;br /&gt;
&lt;br /&gt;
Running&lt;br /&gt;
[[Image:lucky2.PNG]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;java5&amp;quot;&amp;gt;&lt;br /&gt;
package swingworker;&lt;br /&gt;
&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Dimension;&lt;br /&gt;
import java.awt.FlowLayout;&lt;br /&gt;
import java.awt.GridLayout;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import java.util.Random;&lt;br /&gt;
&lt;br /&gt;
import javax.swing.ImageIcon;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JTextField;&lt;br /&gt;
import javax.swing.SwingUtilities;&lt;br /&gt;
import javax.swing.WindowConstants;&lt;br /&gt;
&lt;br /&gt;
import org.jdesktop.swingworker.SwingWorker;&lt;br /&gt;
&lt;br /&gt;
public class LuckyNumber extends JFrame implements ActionListener {&lt;br /&gt;
	private static final long serialVersionUID = 4276832367310733568L;&lt;br /&gt;
	private JLabel label;&lt;br /&gt;
	private JButton cancel;&lt;br /&gt;
	private JButton start;&lt;br /&gt;
	private SwingWorker&amp;lt;?,?&amp;gt; worker;&lt;br /&gt;
	private JTextField textField;&lt;br /&gt;
&lt;br /&gt;
	public LuckyNumber() {&lt;br /&gt;
		JPanel panel = new JPanel();&lt;br /&gt;
		panel.setLayout(new GridLayout(2, 1));&lt;br /&gt;
&lt;br /&gt;
		JPanel buttons = new JPanel(new FlowLayout());&lt;br /&gt;
		start = new JButton(&amp;quot;Start&amp;quot;);&lt;br /&gt;
		start.addActionListener(this);&lt;br /&gt;
		start.setDefaultCapable(true);&lt;br /&gt;
		buttons.add(start);&lt;br /&gt;
		cancel = new JButton(&amp;quot;Cancel&amp;quot;);&lt;br /&gt;
		cancel.setEnabled(false);&lt;br /&gt;
		cancel.addActionListener(this);&lt;br /&gt;
		buttons.add(cancel);&lt;br /&gt;
		panel.add(buttons);&lt;br /&gt;
&lt;br /&gt;
		ImageIcon image;&lt;br /&gt;
		if (getClass().getResourceAsStream(&amp;quot;/swingworker/spinner.gif&amp;quot;) != null)&lt;br /&gt;
			image = new ImageIcon(&amp;quot;swingworker/spinner.gif&amp;quot;);&lt;br /&gt;
		else&lt;br /&gt;
			image = new ImageIcon(&amp;quot;http://www.me.com/my/shared_1b/en/images/spinners/spinner_32px_f3f5f5.gif&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		label = new JLabel(image);&lt;br /&gt;
		JPanel answer = new JPanel(new GridLayout(1, 2));&lt;br /&gt;
		textField = new JTextField(&amp;quot;&amp;quot;);&lt;br /&gt;
		answer.add(textField);&lt;br /&gt;
		answer.add(label);&lt;br /&gt;
		label.setVisible(false);&lt;br /&gt;
		panel.add(answer);&lt;br /&gt;
&lt;br /&gt;
		setTitle(&amp;quot;Lucky number generator&amp;quot;);&lt;br /&gt;
		setPreferredSize(new Dimension(300, 100));&lt;br /&gt;
		getContentPane().setLayout(new BorderLayout());&lt;br /&gt;
		getContentPane().add(panel);&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		SwingUtilities.invokeLater(new Runnable() {&lt;br /&gt;
			public void run() {&lt;br /&gt;
				LuckyNumber luckyNumber = new LuckyNumber();&lt;br /&gt;
				luckyNumber.pack();&lt;br /&gt;
				luckyNumber.setVisible(true);&lt;br /&gt;
				luckyNumber.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public void actionPerformed(ActionEvent e) {&lt;br /&gt;
		if (e.getSource() == start) {&lt;br /&gt;
			start.setEnabled(false);&lt;br /&gt;
			textField.setText(&amp;quot;&amp;quot;);&lt;br /&gt;
			worker = new NumberWorker();&lt;br /&gt;
			worker.execute();&lt;br /&gt;
			label.setVisible(true);&lt;br /&gt;
			cancel.setEnabled(true);&lt;br /&gt;
		} else if (e.getSource() == cancel) {&lt;br /&gt;
			cancel();&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	@Override&lt;br /&gt;
	public void dispose() {&lt;br /&gt;
		cancel();&lt;br /&gt;
		super.dispose();&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	private void cancel() {&lt;br /&gt;
		start.setEnabled(true);&lt;br /&gt;
		label.setVisible(false);&lt;br /&gt;
		cancel.setEnabled(false);&lt;br /&gt;
		if (worker != null) {&lt;br /&gt;
			worker.cancel(true);&lt;br /&gt;
			worker = null;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	private class NumberWorker extends SwingWorker&amp;lt;String, Object&amp;gt; {&lt;br /&gt;
&lt;br /&gt;
		private Random r = new Random();&lt;br /&gt;
&lt;br /&gt;
		@Override&lt;br /&gt;
		protected String doInBackground() throws Exception {&lt;br /&gt;
			long s = System.currentTimeMillis();&lt;br /&gt;
			while (System.currentTimeMillis() - s &amp;lt; 5000 &amp;amp;&amp;amp; !Thread.currentThread().isInterrupted()) {&lt;br /&gt;
				r.nextInt();&lt;br /&gt;
			}&lt;br /&gt;
			return String.valueOf(r.nextInt(10) + 1);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		@Override&lt;br /&gt;
		protected void done() {&lt;br /&gt;
			try {&lt;br /&gt;
				textField.setText(get());&lt;br /&gt;
				LuckyNumber.this.worker = null;&lt;br /&gt;
				LuckyNumber.this.cancel();&lt;br /&gt;
			} catch (Exception ignore) {&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Java]]&lt;/div&gt;</summary>
		<author><name>Egge</name></author>
	</entry>
</feed>