Java 打开子对话框后,InputMap/ActionMap不工作
我尝试在按ESC键时关闭对话框,在按ENTER键时接受对话框。 因此,我使用输入/动作映射构建了一个超类CloseableDialog,如下所示: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
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设置对话框的焦点,但它不起作用。