使用ActionBinding按下组合键

时间:2015-02-11 13:18:44

标签: 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");
        }
    });

不幸的是,方法永远不会进入。

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

你能帮帮我吗?

1 个答案:

答案 0 :(得分:3)

compoent有三个InputMap

当只是在没有参数的情况下调用getInputMap时,它暗含了

getInputMap(JComponent.WHEN_FOCUSED)

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