Javax Swing Java by API

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.ProgressMonitor;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
import javax.swing.UIManager;
public class MainClass extends JFrame implements ActionListener {
  static ProgressMonitor pbar = new ProgressMonitor(null, "Monitoring Progress", "Initializing . . .", 0, 100);
  static int counter = 0;
  public MainClass() {
    super("Progress Monitor Demo");
    setSize(250, 100);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Timer timer = new Timer(500, this);
    timer.start();
    setVisible(true);
  }
  public static void main(String args[]) {
    UIManager.put("ProgressMonitor.progressText", "This is progress?");
    new MainClass();
  }
  public void actionPerformed(ActionEvent e) {
    SwingUtilities.invokeLater(new Update());
  }
  class Update implements Runnable {
    public void run() {
      if (pbar.isCanceled()) {
        pbar.close();
        System.exit(1);
      }
      pbar.setProgress(counter);
      pbar.setNote("Operation is " + counter + "% complete");
      counter += 2;
    }
  }
}