Listing 1. From an ActionEvent to a background thread.
public void actionPerformed(ActionEvent event) {
  Thread thread = new Thread() {
    public void run() {
      executeLongOperation();
    }
  };
  thread.start();
}

private void executeLongOperation() {
  try {
    // synchronous
    SwingUtilities.invokeAndWait(new Runnable() {
      public void run() {
        statusLabel.setText("Starting long operation");
      }
    });
  } catch (InterruptedException e) {
    e.printStackTrace();
  } catch (InvocationTargetException e) {
    e.printStackTrace();
  }

  for (int i = 10; i >= 0; i--) {
    try {
      Thread.sleep(1000);

    } catch (InterruptedException e) {
    }
    final int secondsRemaining = i;
    // asynchronous
    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        statusLabel.setText("Completing in " + secondsRemaining);
      }
    });
  }
}

How to Add Java Applets to Your Site

New on the Java Boutique:

New Review:

Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling API boasts simplicity, ease-of-integration, a well-rounded feature set, and it's free!

New Applet:

Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA sequences into three useful formats.

Elsewhere on internet.com:

WebDeveloper Java
Lots of Java information on webdeveloper.com

WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.

ScriptSearch Java
Hundreds of free Java code files to download.

jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.