在Swing Action事件中实现CTRL_MASK

时间:2013-11-15 19:51:43

标签: java swing java-7 keyevent actionevent

我必须在这里遗漏一些内容,但我无法弄清楚为什么InputEvent.CTRL_DOWN_MASKInputEvent.CTRL_MASK有效?

我要做的是为Ctrl-C实现一种在Swing GUI中发出命令的方法。我使用以下代码:

  myTextArea.getInputMap(JComponent.WHEN_FOCUSED).put(
      KeyStroke.getKeyStroke((char) 'c', /***/InputEvent.CTRL_DOWN_MASK/***/), "ctrl");
  myTextArea.getActionMap().put("ctrl", new AbstractAction() {
    @Override
    public void actionPerformed(ActionEvent e) {
      System.out.println("test");
    }
  });

注意InputEvent.CTRL_DOWN_MASK。当我把它留在那里时,动作永远不会被执行。当我评论它时,动作有效(但我只按下小写'c'按钮。不是ctrl。

我是否遗漏了如何真正使用CTRL_MASK进行挥杆键事件?

2 个答案:

答案 0 :(得分:2)

  

我是否错过了如何真正使用CTRL_MASK进行挥杆的方法   关键事件?

  • 你必须把这个参数放到InputMap

e.g。 inputMap.put(KeyStroke.getKeyStroke(myKey, InputEvent.CTRL_DOWN_MASK), someName);

答案 1 :(得分:1)

这看起来对我来说很合适,但请尝试

KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_DOWN_MASK);

而不是

KeyStroke.getKeyStroke((char) 'c', InputEvent.CTRL_DOWN_MASK);

即,不要依赖intchar值的解释来传递您的密钥代码;使用Java提供的“虚拟键盘”常量。