WindowListener

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);
以上で作成したアプレットを以下に示します。
(フレームを複数生成し、フレームを替えて、描いてみましょう。)


以上の各プログラムを確認したらこのボタンをクリックください。→