我需要在主机上创建关键事件。 所以,我做了一个简单的java代码。
import java.awt.event.KeyEvent;
import java.awt.Robot;
import java.io.IOException;
public class Hello {
public static void main(String[] args) throws IOException {
try {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_F11);
} catch (Exception e) {
e.printStackTrace();
}
}
}
当我使用Eclipse
在Windows上执行此代码时,keyevent
的{{1}}仅在5秒后触发一次。
但是,当我使用F11
或命令(Ubuntu(12.04)
和Eclipse
)在javac
上执行此操作时,
java
似乎是不断触发的。 (似乎进入无限循环)
Java版本为keyevent
。
我不知道为什么会这样。有人知道这方面的解决方案吗?
答案 0 :(得分:3)
您还需要释放密钥(以模拟密钥类型)...
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_F11);
Thread.sleep(250);
robot.keyRelease(KeyEvent.VK_F11);
其他方面,系统会认为你按住了键......
ps-我发现添加一个小延迟有助于改善整体功能。您可以直接在Robot中设置自动延迟。有关详细信息,请参阅Robot#setAutoDelay
答案 1 :(得分:1)
如上所述in the JavaDoc,您必须在按下后“释放”该键:
robot.keyPress(KeyEvent.VK_F11);
robot.keyRelease(KeyEvent.VK_F11);
在你释放它之前它仍然是“按下”。