为什么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
我该如何解决?
答案 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();