Windowsクラスの継承であるJDialogやJFrameは、
WindowListenerインターフェイスのメソッド宣言を
利用して作られています。
それらは、abstractメソッドと呼ばれ、次の7つです。詳細は、
詳細は次のリンクで調べましょう。
//Window がアクティブ に変化した時、呼び出されます。 public void windowActivated(WindowEvent e); //dispose の呼び出し結果で、ウィンドウクローズ処理終了時に呼び出されます。 public void windowClosed(WindowEvent e); //ユーザによる閉じるボタン操作などで、閉じる処理直前に呼び出されます。 public void windowClosing(WindowEvent e); //Window がアクティブでなくなったときに呼び出されます。 public void windowDeactivated(WindowEvent e); //最小化状態から通常の状態に変更された時、呼び出されます。 public void windowDeiconified(WindowEvent e); //通常の状態から最小化された状態に変更された時、呼び出されます。 public void windowIconified(WindowEvent e); //ウィンドウが最初に可視になった時、呼び出されます。 public void windowOpened(WindowEvent e);
これらのメソッドは、ウィンドウアクティブ状態の変化や、オープン/クロースが行われた時、
またタスクバーへの出し入れ時に呼び出されるよう作られています。
これらの処理プログラムを作るのは、どのクラスでも構いません。作る場合は、
その作るクラスで、implements WindowListenerを記述し、
これらのabustractメソッドはオーバーライドする形で作ります。
以下で、前ページで作成したBrushFrameクラスへ実装し、
そのウインドウがアクティブになった時、
インスタンス変数paintPanelを介して、PaintPanelのインスタンス変数brushImgを設定します。
まずBrushFrame.javaで、WindowEventやWindowListenerが使えるように、次を追加します。
import java.awt.event.*;
そして、WindowListenerインターフェイスをBrushFrameクラスに実装するために、
クラス定義を次のよう変更します。
public class BrushFrame extends JFrame implements WindowListener
そしてこのクラスに、
WindowListenerインターフェイスメソッドをオーバーライドする
次のメソッドを追加します。
//Window がアクティブ に変化した時、呼び出されます。 public void windowActivated(WindowEvent e){ System.out.println("windowActivated"); } //dispose の呼び出し結果で、ウィンドウクローズ処理終了時に呼び出されます。 public void windowClosed(WindowEvent e) { System.out.println("windowClosed"); } //ユーザによる閉じるボタン操作などで、閉じる処理直前に呼び出されます。 public void windowClosing(WindowEvent e) { System.out.println("windowClosing"); } //Window がアクティブでなくなったときに呼び出されます。 public void windowDeactivated(WindowEvent e) { System.out.println("windowDeactivated"); } //最小化状態から通常の状態に変更された時、呼び出されます。 public void windowDeiconified(WindowEvent e) { System.out.println("windowDeiconified"); } //通常の状態から最小化された状態に変更された時、呼び出されます。 public void windowIconified(WindowEvent e) { System.out.println("windowIconified"); } //ウィンドウが最初に可視になった時、呼び出されます。 public void windowOpened(WindowEvent e) { System.out.println("windowOpened"); }
そして このBrushFrameクラスのコンストラクタに、
次のコードを追加して、WindowListenerインターフェイスを実装したオブジェクトの
これ(this)を
引数で指定します。
this.addWindowListener(this);
以上で作成したアプレットを以下に示します。
(フレームを複数生成し、フレームを替えて、描いてみましょう。)
以上の各プログラムを確認したらこのボタンをクリックください。→