[Version3: 処理終了を通知できるバージョン]
次に、なが〜い処理が終了したら、それを通知できるGUIアプリケーションを用意しました。
Observerパターンは、イベント処理でも使われていますが、
なんらかの変更を通知するオブジェクトと、その変更を受け取って処理するオブジェクトに分かれます。
ボタンのイベント処理なら、「ボタンをクリックした」という変更を通知するオブジェクト(JButton)と、
「ボタンがクリックされた」という変更を受け取って処理するオブジェクト(ActionListener)に分かれます。
今回の場合は、「なが〜い処理が終了した」という変更を通知するオブジェクト(LongProcessThread)と、
「なが〜い処理が終了した」という変更を受け取って処理するオブジェクト(MyButtonListener)に分かれます。(下図参照)
Observerパターンを適用したことで、MyButtonListenerは、
ボタンのクリック処理と、なが〜い処理の終了処理の、二つを行うことができるわけです。
以下のクラス宣言が、まさにそれを表しています。
public class MyButtonListener implements ActionListener, Observer
インタフェース名 | 監視(Observe)対象 | イベント処理記述メソッド |
ActionListener | ボタンのクリックを監視する | actionPerformed |
Observer | なが〜い処理の終了を監視する | update |
ただ、MyButtonListerのupdateメソッドを見れば分かるように、
コンソールに表示しかできてません。
これを画面に表示できるようにするのが、次のバージョンです。
<<< [Version2: ウインドウが固まるバージョン] >>> [Version4: 処理終了を画面に表示できるバージョン] [Top]