java - JPanel 对 KeyBindings 没有反应

标签 java swing jpanel key-bindings keystrokes

我正在开发一个需要 JPanel 对按下的转义键使用react的应用程序。 我很确定我使用了正确的方法将键绑定(bind)注册到组件,但显然我仍然做错了。这是负责注册结束响应所述键绑定(bind)的代码:

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。我真诚地希望任何人都可以帮助我解决这个问题,因为它严重阻碍了我的进步。

最佳答案

关于java - JPanel 对 KeyBindings 没有反应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13201744/

相关文章:

java - MVVM + 改造 : retrieve JSON Object List then produces null

java - Android 发布应用程序市场自动执行购买后任务

java - CollectionUtils.isEmpty(list) 如何工作?

java - 将单独类中的多个组件添加到另一个类中的 JFrame

java - 监听android中动态创建的切换按钮

java - 为什么在Java中必须使用paintComponent方法来绘制?

java - 如何在 Swing 中绘制虚拟帧缓冲区?

java - 为什么我的缓冲图像不显示在我的 JPanel 中?

java从其他类添加jpanels

java - 如何在 JPanel 上创建新 Canvas ?