WindowListener

WindowListenerは、ウィンドウに関するイベントを受け取るインタフェース・・・。

WindowListener (Java Platform SE 6)

Frameの項ではウィンドウを閉じることができなかったが、これの派生クラスを作ってFrameオブジェクトに登録することで、閉じてアプリケーションを終了するなどの処理が可能となる・・・。

今回は、Frameを継承した派生クラスMainFrameを定義する・・・。
コンストラクタでサイズを(640, 480)としているだけ・・・。

MainFrameのイベントを受け取るMainFrameWindowListenerを定義・・・。

windowClosingはウィンドウが閉じられている時・・・。
eにはイベント情報が渡される・・・。getWindowでイベント元のウィンドウを取得し、disposeでウィンドウリソースを破棄する・・・。
これをしないとウィンドウリソースが破棄されないので注意・・・。

windowClosedはウィンドウが閉じられた時・・・。
ウィンドウが閉じられたら、System.exit(0)でアプリケーションを終了する・・・。

それ以外のメソッドも一応定義だけは書いておかないといけない・・・。

MainClassでmainFrameの表示まで行ったら、

MainFrameWindowListenerオブジェクトインスタンスlistenerをaddWindowListenerでmainFrameにセットする・・・。

これでウィンドウのイベントを処理できる・・・。

f:id:BG1:20160228093919p:plain

実行するとウィンドウが表示される・・・。
赤い停止ボタンが有効ということは、アプリケーションが動作中であることを示している・・・。
閉じるボタンを押すと、

f:id:BG1:20160228094036p:plain

ウィンドウが閉じて、停止ボタンがグレーアウト、下に"<終了>"と出ているのでアプリケーションが終了したことがわかる・・・。

Sample/MainClass.java at master · bg1bgst333/Sample · GitHub
Sample/MainFrame.java at master · bg1bgst333/Sample · GitHub
Sample/MainFrameWindowListener.java at master · bg1bgst333/Sample · GitHub