我这里一定错过了什么,但我无法弄清楚为什么InputEvent.CTRL_DOWN_MASK
或InputEvent.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_MASK用于摇摆键事件的内容?
我是否错过了如何真正使用CTRL_MASK进行秋千的东西 关键事件?
- 你必须把这个参数放在
InputMap
例如 inputMap.put(KeyStroke.getKeyStroke(myKey, InputEvent.CTRL_DOWN_MASK), someName);
这对我来说看起来很正确,但请尝试
KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_DOWN_MASK);
而不是
KeyStroke.getKeyStroke((char) 'c', InputEvent.CTRL_DOWN_MASK);
也就是说,不要依赖char
值的int
解释来传递键代码;使用Java提供的"虚拟键盘"常量。