为什么KeyStroke.getKeyStroke('h')。getKeyCode();返回0?

时间:2015-08-21 13:45:33

标签: java keycode keystroke

为什么KeyStroke.getKeyStroke('h').getKeyCode();会返回0?

例如:

import javax.swing.KeyStroke;

public class KeyStrokeTest {
  public static void main(String[] args) {
    KeyStroke keyStroke = KeyStroke.getKeyStroke('h');
    System.out.println(keyStroke.getKeyCode());
  }
}

输出:

0

我该如何解决?

2 个答案:

答案 0 :(得分:2)

此方法委托给AWTKeyStroke.getCachedStroke(keychar, VK_UNDEFINED, 0, false);,这基本上意味着keyCode设置为零。这样做是因为它不知道你可能已经按下了什么,例如 Shift Ctrl 等等。

您可能正在寻找的方法是getKeyChar(),它会返回'h'

或者,您可以调用KeyStroke.getKeyStroke('h', 0),它将指定修饰符,因此将具有正确的KeyCode值。

答案 1 :(得分:0)

而不是KeyStroke.getKeyStroke(char keyChar),尝试使用KeyStroke.getKeyStroke(Character keyChar,int modifiers),修饰符值为0.换句话说,使用:

KeyStroke.getKeyStroke('h', 0).getKeyCode();