嘿那里使用这段代码:
try {
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_H);
robot.keyRelease(KeyEvent.VK_H);
robot.keyPress(KeyEvent.VK_A);
robot.keyRelease(KeyEvent.VK_A);
robot.keyPress(KeyEvent.VK_L);
robot.keyRelease(KeyEvent.VK_L);
robot.keyPress(KeyEvent.VK_L);
robot.keyRelease(KeyEvent.VK_L);
robot.keyPress(KeyEvent.VK_O);
robot.keyRelease(KeyEvent.VK_O);
} catch (AWTException e) {
e.printStackTrace();
}
我得到了这个结果:
hallo
但有没有办法缩短这个过程?例如类似的东西:
try {
Robot robot = new Robot();
String word = "hallo";
// something like:
robot.keyPress(KeyEvent.word);
} catch (AWTException e) {
e.printStackTrace();
}
我知道这个例子不起作用,但我找不到任何关于此的文档。
你有什么想法吗?问候和感谢
答案 0 :(得分:4)
如果您使用的是Java 7,则可以使用KeyEvent.getExtendedKeyCodeForChar
方法从char中获取密钥代码:
import java.awt.event.KeyEvent;
[...]
public static void type(Robot robot, String word) {
for (int i = 0; i < word.length(); i++) {
int keyCode = KeyEvent.getExtendedKeyCodeForChar(word.charAt(i));
robot.keyPress(keyCode);
robot.keyRelease(keyCode);
}
}
[...]
Robot robot = new Robot();
type(robot, "hallo");
答案 1 :(得分:1)
制作这样的方法。只需使用带有角色的方法。
public void press(String s, Robot r)
{
for (char ch : s.toCharArray())
{
if (Character.isUpperCase(ch))
r.keyPress(KeyEvent.VK_SHIFT);
r.keyPress(Character.toUpperCase(ch));
r.keyRelease(Character.toUpperCase(ch));
}
}
或者您可以使用它来获取KeyCode。
KeyStroke.getKeyStroke(ch, 0).getKeyCode();
或者
KeyEvent.getExtendedKeyCodeForChar(ch);
希望这有帮助。