- PR -

JDialog閉じるボタンについて

1
投稿者投稿内容
n.w
大ベテラン
会議室デビュー日: 2003/07/15
投稿数: 126
お住まい・勤務地: 神奈川
投稿日時: 2005-01-26 18:40
お世話になっています。 早速質問なんですが、
現在 JDialogクラスを継承したクラスを作成しているのですが
ダイアログ右上の×(閉じる)ボタンをクリックした際にイベントを
とりたいのですがどのようにすればいいのでしょうか?
コード:
protected void processWindowEvent(WindowEvent e) {
	if (e.getID() == WindowEvent.WINDOW_DEACTIVATED ) {
		System.out.println("終了イベント");
		this.dispose();
    }
}


としているのですが、this.dispose();でうまく閉じることができない
状態です。 この場合dispose()では閉じることができないのでしょうか?

それか×ボタン自体出さないようにはできないでしょうか?
色々検索してみたところ、見つけることができませんでした


びしばし
大ベテラン
会議室デビュー日: 2002/03/13
投稿数: 181
投稿日時: 2005-01-26 19:02
WINDOW_DEACTIVATED ではなくて WINDOW_CLOSING で処理してみてください。
×ボタンの件は「まず無理」と思ってください。
n.w
大ベテラン
会議室デビュー日: 2003/07/15
投稿数: 126
お住まい・勤務地: 神奈川
投稿日時: 2005-01-26 19:23
びしばしさんありがとうございます。
以下のようにして、想定した動きになることを確認できました。

ただ1つ気になる点があるのですが、今回の×ボタンを押下した
際の処理というのはダイアログ内にあるキャンセルボタンを
押下した際と同じことをするで作っているのですが、
キャンセル時はhide()メソッドではなく
this.dispose();メソッドを使用しダイアログを閉じています。

この違いというのは呼び出しているイベントが違う為に発生している
のでしょうか? ちなみにhideメソッド呼び出しは
actionPerformed(ActionEvent ae) {}内で行っています。

動作確認はできたのですが、どうにも、この点が気持ち悪くて
しょうがないです(^^;
コード:
protected void processWindowEvent(WindowEvent e) {
    System.out.println("e.getID()  => " + e.getID() );
    if (e.getID() == WindowEvent.WINDOW_CLOSING ) {
        this.hide();
    }
}

takamaro
大ベテラン
会議室デビュー日: 2004/10/12
投稿数: 100
投稿日時: 2005-01-26 20:20
閉じるボタン押下での処理がダイアログを破棄して閉じるだけなのならば、
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE)
で良さそうな気がします。
何もさせない場合は引数をWindowConstants.DO_NOTHING_ON_CLOSEで。

ん?、、それとも、なんか私が質問の主旨を誤解しているのかな、、
1

スキルアップ/キャリアアップ(JOB@IT)