如何在Robot Class KeyEvent参数中放置一个String变量?

时间:2016-03-12 15:38:09

标签: java string keypress keyevent awtrobot

我在Java中使用Robot类,我创建了一个按键的静态方法。我的问题是我希望能够使用main方法的输入按任何键,但keyPress方法和keyRelease方法的参数不接受String。而且我不想使用很多if语句按下该键。这是我的代码:

public static void keyType(String key) throws AWTException {
  Robot r = new Robot();
  r.keyPress(KeyEvent.VK_A);
  r.keyRelease(KeyEvent.VK_A);
}

现在我想使用键变量(从我的main方法输入)来决定按哪个键。我打算在字符串中使用大写字母(例如" A"或" B"),并将keyPress和keyRelease参数中的(KeyEvent.VK_A)替换为(KeyEvent.VK_A) KeyEvent.VK_ + key)。但后来我意识到它没有接受或使用String参数,所以我该怎么办?

2 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你可以解析键码到机器人按键方法。你不能使用KeyEvent.VK_+"A"但你可以使用65。 而是KeyEvent.VK_A您可以使用65,这是A的关键代码。

private void keyType(char key) {

    int keyCode = (int) key;

    Robot r = new Robot();
    r.keyPress(KeyEvent.VK_A);
    r.keyRelease(KeyEvent.VK_A);
}

如果您查看keyEvent.class的源代码,您可以看到实际上VK_N是什么。它只是一个带有密钥代码的映射int。

public class KeyEvent extends InputEvent {

    public static final int VK_A = 65;
    public static final int VK_B = 66;
    public static final int VK_C = 67;
    public static final int VK_D = 68;
    public static final int VK_E = 69;

答案 1 :(得分:0)

实际上,我发现了另一种方法。这个参数的参数是int,所以我找到了键盘上每个键的键码,从A(65)开始。现在我可以成功从键盘输入。如果其他人想要查看链接,请点击此处:Key Codes