概要 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 : Swingの最新記事】
- Java + Swing : JTable に CSV フォーマットのテキストファイルを読み込む
- Swing の JTable に 1) WEBのJSON2次元配列。2) WEB の JSON配列 を取り込んで表示する( Google Gson と okhttp を使用 )
- Swing の JTable に 1) ローカルの CSV。2) WEB の CSV を取り込んで表示する
- Eclipse( Pleiades ) Helios に、VisualEditor をインストールして、JFrame で実行するまでの全手順画像
- Java : InputMap を使って JFrame 上のキーを全て処理する
- Java : WEB 上の XML を JTable に表示