JPanel不响应KeyBindings。

7

我正在开发一个应用程序,需要让JPanel在按下Esc键时作出反应。 我相信我使用了正确的方法来为组件注册按键绑定,但显然我仍在做错某些事情。这是负责注册并对所述按键绑定作出反应的代码:

private void initializeKeyBindings() { 
    Action a = new AbstractAction() {
        private static final long serialVersionUID = 1L;
        @Override public void actionPerformed(ActionEvent e) {
            menu.setVisible(true);
            System.out.println("Herp");
        }
    };
    this.getInputMap().put(KeyStroke.getKeyStroke("ESCAPE"), "ESCAPE");
    this.getActionMap().put("ESCAPE", a);
}

在所有其他组件初始化后,此方法在我的JPanel构造函数中调用。我已经尝试调试它,并发现该操作本身已在JPanel中注册,但是actionPerformed()方法中的代码从未被触发。我怀疑这个JPanel没有焦点,因为我在上面的JFrame中使用了CardLayout。我真诚地希望有人能帮助我解决这个问题,因为它非常严重地影响着我的进度。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接