使用 ActionBinding 按下组合键

Combined key's pressed with ActionBinding

我得到这段代码来识别用户是否按下了 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");
        }
    });

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

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

你能帮帮我吗?

组件有三个InputMap

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

getInputMap(JComponent.WHEN_FOCUSED)

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