1

我需要在主机上创建关键事件。所以,我做了一个这样的简单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();
    }
    }
}

当我在 Windows 上使用Eclipse, keyeventfor执行此代码时,F11仅在 5 秒后触发一次。但是,当我在Ubuntu(12.04)使用Eclipse或命令(javacjava)上执行此操作时,keyevent似乎会连续触发。(似乎进入了无限循环) Java 版本是1.6 and 1.7 on Ubuntu.

我不知道为什么会这样。有人知道这个的解决方案吗?

4

2 回答 2

3

您还需要释放密钥(模拟密钥类型)...

Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_F11);
Thread.sleep(250);    
robot.keyRelease(KeyEvent.VK_F11);

否则系统会认为你按住键...

ps-我发现添加一个小延迟有助于改善整体功能。您可以直接在机器人内设置自动延迟。查看Robot#setAutoDelay更多详情

于 2013-06-13T06:57:16.080 回答
1

正如JavaDoc中所说,您必须在按下该键后“释放”它:

robot.keyPress(KeyEvent.VK_F11);
robot.keyRelease(KeyEvent.VK_F11);

它保持“按下”状态,直到您释放它。

于 2013-06-13T06:57:27.493 回答