java - 使用 ActionBinding 按下组合键

标签 java swing key-bindings key-events

我得到这段代码来识别用户是否按下了 ctrl + A 按钮:

    mPanel.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_DOWN_MASK), "ALL");
    mPanel.getActionMap().put("ALL", new AbstractAction() {
        @Override
        public void actionPerformed(ActionEvent e) {
          System.out.println("All");
        }
    });

不幸的是,该方法从未被输入。

目前我不知道我错过了什么。

你能帮帮我吗?

最佳答案

组件有3个InputMap

当不带参数调用getInputMap时,它隐含地暗示

getInputMap(JComponent.WHEN_FOCUSED)

所以你应该使用 getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)

关于java - 使用 ActionBinding 按下组合键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28455402/

相关文章:

java - Spring中调用ApplicationContext.getBean()是否使用依赖注入(inject)?

java - 向 JTable 添加彩色行

Java 键绑定(bind)的触发非常不一致

java - 更改 Ribbon Application MenuEntry Primary (Flamingo) 的背景颜色

java - 多个面板/ Canvas

xcode4 - Xcode 重复行

java - Java中的自定义键盘快捷键

java - 在 Java 中清理 JSON 字符串值

java - 从父 Activity 访问 Fragment 对象

java - 真正高质量和复杂的 Swing 组件在哪里?