Tips > ウィンドウを閉じる前に警告を出すには?

 

ウィンドウを閉じる前に警告を出すには?

Shellウィンドウを閉じるときには警告ダイアログ等を出すには、shellにShellListenerを追加します。そしてウィンドウのクローズボタンが押されたときに、shellClosedメソッドが呼び出されるので、ここにMessageBoxを表示する処理を書けばよいわけです。その後実際にアプリケーションを終了しない場合は、条件分岐でShellEventのdoitフィールドにfalseを代入します。

Shell shell = ...;
shell.addShellListener(new ShellListener(){
   public void shellClosed(ShellEvent e){
       MessageBox box = new MessageBox(...);
       ...
       int ret = box.open();
       if (ret == SWT.CANCEL) {
          //Shellを終了させない場合
          e.doit = false;
          return;
       }
       //Shellは終了
       ...
   }
});

サンプルプログラム

Shellのクローズボックスを押すと終了確認のダイアログが表示されます。

ソースコード (ShellCloseTest.java)

import org.eclipse.swt.widgets.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ShellAdapter;
import org.eclipse.swt.events.ShellEvent;

public class ShellCloseTest {

        public static void main(String[] args) {
                new ShellCloseTest();
        }
        public ShellCloseTest() {
                Display display = new Display();
                final Shell shell = new Shell(display);
                shell.setText("WindowCloseTest");
                shell.addShellListener(new ShellAdapter(){
                        public void shellClosed(ShellEvent e) {
                            MessageBox msg = new MessageBox(shell, 
                                                            SWT.OK | 
                                                            SWT.CANCEL |
                                                            SWT.ICON_WARNING);
                            msg.setText("本当に終了しますか?");
                            msg.setMessage("本当に終了しますか?");
                            int ret = msg.open();
                            if (ret == SWT.CANCEL){
                                e.doit = false;
                                return;
                            }
                        }
                });

                shell.pack();
                shell.open();
                while (!shell.isDisposed()) {
                        if (!display.readAndDispatch()) {
                                display.sleep();
                        }
                }
                display.dispose();
        }
}


最新更新日: 2004年10月20日
 
関連リンク
Eclipse API ドキュメント
API - Shell
API - ShellListener
API -ShellAdapter
Shell
MessageBox

- PR -

マイクロソフト お得な見積! まとめての購入ならオトクな方法で。ライセンスだから管理も簡単。

シマンテック 割引価格! オンライン販売だから低価格。いつでも簡単、見積・購入。

■原石のままでは、終わりたくない貴方へ!キャリアアップ転職を成功へとナビゲート

秋葉原・なんば・名古屋・札幌に店舗を構えるパソコンショップ!【ツクモ】

マイクロソフト お得な見積! まとめての購入ならオトクな方法で。ライセンスだから管理も簡単。

シマンテック 割引価格! オンライン販売だから低価格。いつでも簡単、見積・購入。

■原石のままでは、終わりたくない貴方へ!キャリアアップ転職を成功へとナビゲート

秋葉原・なんば・名古屋・札幌に店舗を構えるパソコンショップ!【ツクモ】


Copyright(C) 2003,2004 Jasmin Project. All Right Reserved.
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送