JPanel对KeyBindings没有反应

时间:2012-11-02 19:22:59

标签: java swing jpanel key-bindings keystrokes

我正在处理一个需要JPanel对按下的转义键作出反应的应用程序。 我很确定我使用正确的方法将键绑定注册到组件但显然我仍然做错了。这是负责注册对所述键绑定的反应的代码:

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。我真诚地希望任何人都可以帮助我,因为它会非常严重地阻碍我的进步。

1 个答案:

答案 0 :(得分:10)