Java 打开子对话框后,InputMap/ActionMap不工作

Java 打开子对话框后,InputMap/ActionMap不工作,java,dialog,keystroke,Java,Dialog,Keystroke,我尝试在按ESC键时关闭对话框,在按ENTER键时接受对话框。 因此,我使用输入/动作映射构建了一个超类CloseableDialog,如下所示: getRootPane().getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "accept"); getRootPane().getActionMap().put("accept", acceptAction); getRootPane().ge

我尝试在按ESC键时关闭对话框,在按ENTER键时接受对话框。 因此,我使用输入/动作映射构建了一个超类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->无任何情况发生

有什么想法吗

我想,diposed子对话框仍然会得到另一个对话框的输入,但我不确定。

当组件对焦时,shorcuts会工作。我认为以前打开的窗口中没有对焦。请尝试将对焦恢复到需要快捷方式的窗口。尝试在该窗口上点击并应用快捷方式。也许它会工作。否则,您必须处理它。

我已经找到了

雷丁告诉我,有三个输入图:

JComponent.WHEN_聚焦 JComponent.WHEN_FOCUSED_组件的祖先_ JComponent.WHEN在聚焦窗口中 通过调用getRootPane.getInputMap,我得到了默认值, 但是,通过调用子对话框,根窗格似乎失去了焦点,并且没有任何帮助 找回焦点

现在我正在使用getRootPane.getInputMapJComponent.WHEN_IN_FOCUSED_WINDOW.put。。。 它是有效的


我有点惊讶,它在打开子对话框之前一直有效。

我忘了提到:关闭子对话框后单击对话框也不起作用。我试图通过requestFocus设置对话框的焦点,但它不起作用。