// MyButtonListener.java import java.awt.event.*; import java.util.*; import javax.swing.JOptionPane; public class MyButtonListener implements ActionListener, Observer { MainWindow window; public MyButtonListener(MainWindow window) { this.window = window; } public void actionPerformed(ActionEvent ae) { veryLongProcess(); } public void veryLongProcess() { LongProcessThread thread = new LongProcessThread(); thread.addObserver(this); new Thread(thread).start(); } // Observer#updateの実装 public void update(Observable o, Object arg) { JOptionPane.showMessageDialog(window, "なが〜い処理が終わりました。"); } }