我想做一个机器人,从用户输入中读取一个句子,然后在用户输入5秒钟后输入。这就是我想到的:
public class Main {
static Robot robot;
public static void main(String[] args) throws AWTException {
robot = new Robot();
String text = "";
Scanner scanner = new Scanner(System.in);
System.out.println("Enter Text that should be typed....");
text = scanner.nextLine();
scanner.close();
Main.sleep(5);
writeString(text);
}
public static 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);
}
Main.sleep(0.1);
}
}
}
不幸的是,当我贴上“你好,这是一个测试句。你今天过得怎么样?“机器人想打字时有个例外”。如何修复此问题并防止程序在其他标点字符(如“*”等)处崩溃?
我试图将文本中的字符转换成keycode,然后将keycode放入robot.keypress(keycode)。我把它转换成这样:int keycode=(int)text.charat(…),但这造成了更多的麻烦。。。。
我希望有人能帮我,因为我觉得这其实很简单:-)
1条答案
按热度按时间fcg9iug31#
根据相关的javadoc,并非所有字符都有与其相关联的键码。一个这样的字符正是问号,因为它没有出现在主要层上的键盘(也就是说,它可以在不按修改键的情况下产生,比如shift)。这意味着,对于robot类,必须模拟的事件取决于键盘的布局。例如,要产生问号,我必须按shift键和单引号键(')。