Swing Java Tutorial

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.SwingWorker;
public class Main extends JFrame {
  public Main() {
    this.setLayout(new FlowLayout());
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JButton processButton = new JButton("Start");
    JButton helloButton = new JButton("Hello");
    processButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent event) {
        MyTask process = new MyTask();
        try {
          process.execute();
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    });
    helloButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        JOptionPane.showMessageDialog(null, "Hello There");
      }
    });
    this.getContentPane().add(processButton);
    this.getContentPane().add(helloButton);
    this.pack();
    setVisible(true);
  }
  public static void main(String[] args) {
    new Main();
  }
}
class MyTask extends SwingWorker {
  protected Object doInBackground() throws Exception {
    Integer result = new Integer(0);
    for (int i = 0; i < 10; i++) {
      result += i * 10;
      try {
        Thread.sleep(5000);
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
    return result;
  }
}