使用java.awt.Robot键入String

25 java swing awtrobot

我已经知道如何使用java.awt.Robot键入单个字符keyPress,如下所示.如何文本框中一次输入一个完整的预定义String值?

robot.keyPress(KeyEvent.VK_1);
robot.keyPress(KeyEvent.VK_1);
robot.keyPress(KeyEvent.VK_1);  
// instead, enter String x = "111"
Run Code Online (Sandbox Code Playgroud)

Eng*_*uad 41

常见的解决方案是使用剪贴板:

String text = "Hello World";
StringSelection stringSelection = new StringSelection(text);
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(stringSelection, stringSelection);

Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
Run Code Online (Sandbox Code Playgroud)


Mad*_*mer 7

你需要"输入"这个角色,这是一个按下并释放动作......

robot.keyPress(KeyEvent.VK_1);  
robot.keyRelease(KeyEvent.VK_1);  
Run Code Online (Sandbox Code Playgroud)

现在你可以复制并粘贴三次,但我只是把它放在一个循环中

  • 111只是一个例子.说我希望它进入""Hello world"`! (2认同)

小智 6

从Java 7开始,您还可以使用KeyEvent.getExtendedKeyCodeForChar(c)。仅适用于小写字母的示例可能是:

void sendKeys(Robot robot, String keys) {
    for (char c : keys.toCharArray()) {
        int keyCode = KeyEvent.getExtendedKeyCodeForChar(c);
        if (KeyEvent.CHAR_UNDEFINED == keyCode) {
            throw new RuntimeException(
                "Key code not found for character '" + c + "'");
        }
        robot.keyPress(keyCode);
        robot.delay(100);
        robot.keyRelease(keyCode);
        robot.delay(100);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢。可以使用“Character.isUpperCase(c)”轻松检查大写字母。 (2认同)