ESC を押したときにダイアログを閉じ、ENTER を押したときに受け入れようとしました。したがって、次のように Input/ActionMap を使用してスーパークラス「CloseableDialog」を構築しました。
getRootPane().getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "accept");
getRootPane().getActionMap().put("accept", acceptAction);
getRootPane().getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "cancel");
getRootPane().getActionMap().put("cancel", cancelAction);
ここで、CloseableDialog を拡張するいくつかのダイアログを作成しました。最初はアスペクトとして機能します(ESCを押すと閉じ、ENTERを押すと受け入れます)が、サブダイアログ(ダイアログ内のダイアログ)を開いたとき、ESCを押すとサブダイアログのみを閉じることができました(ESC->サブダイアログが閉じ、他のダイアログが表示されます-> ESC-> 何も起こりません)。
何か案は?
破棄された SubDialog はまだ他のダイアログの入力を取得していると思いますが、よくわかりません。