1

我一定在这里遗漏了一些东西,但我不知道为什么InputEvent.CTRL_DOWN_MASKnorInputEvent.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 进行摇摆键事件的内容?

4

2 回答 2

2

我是否遗漏了有关如何真正使用 CTRL_MASK 进行摇摆键事件的内容?

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

例如inputMap.put(KeyStroke.getKeyStroke(myKey, InputEvent.CTRL_DOWN_MASK), someName);

于 2013-11-15T19:59:20.690 回答
1

这对我来说看起来很正确,但试试

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

代替

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

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

于 2013-11-15T20:34:06.623 回答