我试图在按 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 仍然可以获得另一个 Dialog 的输入,但我不确定。