如何将一个字符串变量放入Robot类的KeyEvent参数中?

3

我正在使用Java中的Robot类,并创建了一个用于按键的静态方法。我的问题是,我想能够通过主方法输入按下任何键,但keyPress方法和keyRelease方法的参数不接受字符串。我也不想使用大量的if语句来按下那个键。以下是我的代码:

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

现在我想使用从主方法输入的“key”变量来决定按哪个键。我计划在字符串中使用大写字母(例如“A”或“B”),并将keyPress和keyRelease参数中的(KeyEvent.VK_A)替换为(KeyEvent.VK_ + key)。但我发现它不接受或使用字符串参数,那该怎么办呢?


在类区域中声明字符串键变量,这样您就可以从keyType方法中访问它。 - Madhawa Priyashantha
我明白了,但我的问题是我无法将关键变量放入KeyEvent参数中。我想做类似这样的事情:(KeyEvent.VK_ + key),但是KeyEvent参数不是String类型。 - computer_geek64
2个回答

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是什么。它只是一个键码映射的整数。
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;

谢谢,真的帮了我很大忙!我刚刚写了类似的东西,你的答案就在我打字的时候出现了!不过还是感谢你的帮助! - computer_geek64

0
其实,我找到了另一种方法来做这件事。这个参数是整数类型的,所以我找到了键盘上每个键的键码,从A(65)开始。现在我可以成功地从键盘获取输入。如果其他人想要查看链接,这里是:键码

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接