我必须在这里遗漏一些内容,但我无法弄清楚为什么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。
我是否遗漏了如何真正使用CTRL_MASK进行挥杆键事件?
答案 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);
即,不要依赖int
对char
值的解释来传递您的密钥代码;使用Java提供的“虚拟键盘”常量。