title: How do I make my SwingWorker example work properly?
body: <p>I've made my own SwingWorker example to get familiar with how it works. </p>
  
  <p>What I'm wanting to do is the following:
  When the button is clicked I want a progress bar appear until the task is done I want to simply remove the progress bar and add a string to the dialog.</p>
  
  <p>When the button is clicked, the progress bar comes up but never goes away. (never removes the progress bar after 10 seconds and never places the label up)</p>
  
  <p>Here is an SSCCE:</p>
  
  <pre><code>package swingtesting;
  
  import java.awt.event.ActionEvent; 
  import java.awt.event.ActionListener;
  import javax.swing.JButton;
  import javax.swing.JDialog;
  import javax.swing.JFrame;
  import javax.swing.JLabel;
  import javax.swing.JProgressBar;
  import javax.swing.SwingWorker;
  
  public class SwingTesting {
  
      /**
       * Creates a frame that will hold a simple button to make use of SwingWorker
       */
       public static void main(String[] args) {
           // TODO code application logic here
           JFrame frame = new JFrame();
           JButton button = new JButton();
  
           button.addActionListener(new ActionListener() {
              public void actionPerformed(ActionEvent e) {
                  new GuiWorker().execute();
              }
           });
           button.setText("Test Me");
           frame.getContentPane().add(button);
           frame.pack();
           frame.setVisible(true);
      }
  }
  
  class GuiWorker extends SwingWorker&lt;Integer, Integer&gt; {
  
      /*
       * This should just create a frame that will hold a progress bar until the
       * work is done. Once done, it should remove the progress bar from the dialog
       * and add a label saying the task complete.
       */
  
      private JFrame frame = new JFrame();
      private JDialog dialog = new JDialog(frame, "Swingworker test", true);
      private JProgressBar progressBar = new JProgressBar();
  
  
      public GuiWorker() {
          progressBar.setString("Waiting on time");
          progressBar.setStringPainted(true);
          progressBar.setIndeterminate(true);
          dialog.getContentPane().add(progressBar);
          dialog.pack();
          dialog.setVisible(true);
      }
  
      @Override
      protected Integer doInBackground() throws Exception {
          Thread.sleep(10000);
          return 0;
      }
  
      @Override
      protected void done() {
          JLabel label = new JLabel("Task Complete");
          dialog.getContentPane().remove(progressBar);
          dialog.getContentPane().add(label);
      }
  
  }
  </code></pre>