概要 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 に表示


JDialog 側
呼び出し部分




