为什么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


我该如何解决?

最佳答案

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

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

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

08-05 06:52