SQLの窓

2014年06月13日


Java : JDialog で モーダルダイアログ

概要

1) 閉じたら Dispose するように設定する
2) モーダルダイアログとして設定する
( 列挙型 Dialog.ModalityType )
※ この機能が導入されたのは、1.6(2006年12月11日)からです。
3) 表示させる( この時点で、モーダルダイアログとして動作し、終了待ちになります )

参考ページ

InputMap を使ってESCキーで閉じる( こちらの記事は 1.4 時点の記事です )

呼び出し側



JDialog 側



呼び出し部分
	private class RefAction extends AbstractAction {
		public RefAction() {
			putValue(NAME, "参照");
			putValue(SHORT_DESCRIPTION, "Some short description");
		}
		public void actionPerformed(ActionEvent e) {
			
			try {
				final Syain dialog = new Syain();
				dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
				dialog.setModalityType(JDialog.ModalityType.APPLICATION_MODAL);
				dialog.addWindowListener(new WindowAdapter() {
					@Override
					public void windowClosing(WindowEvent e) {
						if ( dialog.isResult() ) {
							System.out.println("OKが選択されました");
							syainCode.setText(dialog.getCode());
							checkAction.actionPerformed(null);			
						}
						System.out.println("ダイアログを閉じています");
					}
				});
				dialog.setVisible(true);
				System.out.println("この行は、ダイアログが閉じられた後に実行されます");
				
			} catch (Exception ex) {
				ex.printStackTrace();
			}
			
		}
	}


JDialog を継承したクラスの内部

中のボタンの処理です。ウインドウを閉じる処理は イベントを Post して、x ボタンをクリックした事にしています。
	private class CancelAction extends AbstractAction {
		public CancelAction() {
			putValue(NAME, "キャンセル");
			putValue(SHORT_DESCRIPTION, "Some short description");
		}
		public void actionPerformed(ActionEvent e) {
			Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(new WindowEvent(Syain.this, WindowEvent.WINDOW_CLOSING));			
		}
	}
	private class OkAction extends AbstractAction {
		public OkAction() {
			putValue(NAME, "OK");
			putValue(SHORT_DESCRIPTION, "Some short description");
		}
		public void actionPerformed(ActionEvent e) {
			int row = lboxTable.getSelectedRow();
			if ( row == -1 ) {
				JOptionPane.showMessageDialog(
						contentPanel,
						"行が選択されていません",
						"エラー",
						JOptionPane.ERROR_MESSAGE);
				return;
			}
			
			code = (String) lboxTable.getColumnText(row, "COLUMN_1");
			
			result = true;
			Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(new WindowEvent(Syain.this, WindowEvent.WINDOW_CLOSING));			
		}
	}




タグ:java JDialog
posted by lightbox at 2014-06-13 00:51 | java : Swing | このブログの読者になる | 更新情報をチェックする
バッチ処理

Microsoft Office
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
CSS ドロップシャドウの参考デモ
Google Hosted Libraries
cdnjs
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり