将Char转换为Java KeyEvent KeyCode

Rya*_*yan 14 java key

我正在编写一个基本程序,要求用户键入一个字符串,我正在尝试使用一个Robot(来自java.awt.Robot),它将在延迟后将此消息键入另一个文档.我现在遇到的问题是我需要将我得到的任何内容转换message.charAt(i)为KeyEvent.VK_[insert Char]KeyCode.有没有更好的方法来做我想做的事情?我想我总是可以得到一个大规模的switch语句来获得适当的KeyCode,但我希望有一个更优雅的方式.我第一次想到,已经做了一段时间的python,就是创建一个字符串"KeyEvent.VK_" + message.charAt(i)并将其转换为代码,但我认为唯一的方法是使用不鼓励的反射.

Ste*_*e K 20

如果我有一个unicode角色,我只想知道它的击键,那么我就用了

int keyCode = java.awt.event.KeyEvent.getExtendedKeyCodeForChar(charCode);
Run Code Online (Sandbox Code Playgroud)

我从来没有需要另一种更复杂的方法来做到这一点.

  • 我没有这个功能.您使用的是哪个版本的Java? (2认同)

Wol*_*fii 10

你可以用这个来解决问题:

KeyStroke ks = KeyStroke.getKeyStroke('k', 0);
System.out.println(ks.getKeyCode());
Run Code Online (Sandbox Code Playgroud)

或者只是使用这个:

private void writeString(String s) {
    for (int i = 0; i < s.length(); i++) {
        char c = s.charAt(i);
        if (Character.isUpperCase(c)) {
            robot.keyPress(KeyEvent.VK_SHIFT);
        }
        robot.keyPress(Character.toUpperCase(c));
        robot.keyRelease(Character.toUpperCase(c));

        if (Character.isUpperCase(c)) {
            robot.keyRelease(KeyEvent.VK_SHIFT);
        }
    }
    robot.delay(delay);
}
Run Code Online (Sandbox Code Playgroud)