- PR -

JInternalFrameで閉じるボタンをキャンセルしたい

1
投稿者投稿内容
maru
ぬし
会議室デビュー日: 2003/01/27
投稿数: 412
投稿日時: 2003-09-19 17:42
こんにちは。いつもお世話になってます。

JavaのMDIのJInternalFrameで、閉じるボタン「×」を押したあとに、
閉じるのを取り消したいのですが可能でしょうか?

閉じるボタンを押したあと、ファイル未保存なら閉じる前に警告ダイアログをだして、
場合によっては閉じるのを取り消したいのです。ご存知のかたおられませんか?
ぽん
大ベテラン
会議室デビュー日: 2003/05/13
投稿数: 157
投稿日時: 2003-09-19 18:02
試していませんが・・・

JInternalFrameにInternalFrameListenerを追加して、
internalFrameClosing()の中でInternalFrameEventのconsume()を呼び出せば
キャンセル出来るのでは?

[変更]
違ってました...

[ メッセージ編集済み 編集者: ぽん 編集日時 2003-12-07 19:00 ]
ぽん
大ベテラン
会議室デビュー日: 2003/05/13
投稿数: 157
投稿日時: 2003-12-07 18:58
引用:

JInternalFrameにInternalFrameListenerを追加して、
internalFrameClosing()の中でInternalFrameEventのconsume()を呼び出せば



時間があったので自分でやってみましたが・・・出来ませんね、これ。
InternalFrameEvent#consumeはprotectedでした...

以下のコードで実現出来ます。
コード:
public class MyInternalFrame extends JInternalFrame {
    public void doDefaultCloseAction() {
        final int result = JOptionPane.showConfirmDialog
                                       (null,"", "",JOptionPane.YES_NO_OPTION);
        if (JOptionPane.YES_OPTION == result) {
            super.doDefaultCloseAction();
        }
    }
}

Okayu3
会議室デビュー日: 2004/03/11
投稿数: 11
投稿日時: 2004-03-11 15:11
ほぼ同じ解決法ですが、通常のJFrameでウィンドウの閉じるときの
イベント拾う方法というのは

setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);

をしてから、WindowClosing イベント内で処理する、っていうやり方になりますよね。

JInternalFrameにも これと同じメソッドがありますので、

setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);

をしてから、 FrameClosing イベント内で処理するようにすると、
JFrameと同じように 実装できます。
1

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