java - 在 Ubuntu 上无限调用 Keyevent

标签 java awt ubuntu-12.04 keyevent awtrobot

我需要在主机上创建按键事件。 所以,我做了一个像这样的简单的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 上执行此代码时,F11keyevent 仅在 5 秒后触发一次。 但是,当我使用 Eclipse 或命令(javacjava)在 Ubuntu(12.04) 上执行此操作时, keyevent 似乎是连续触发的。 (好像进入无限循环) Java 版本在 Ubuntu 上是 1.6 和 1.7

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

最佳答案

您还需要释放 key (以模拟 key 类型)...

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

否则系统会认为您按住了键...

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

关于java - 在 Ubuntu 上无限调用 Keyevent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17080902/

相关文章:

java - 在另一个类方法中调用小程序

java - Lejos 在初始化矩阵时给出错误

javascript - 将 Nashorn 输出编译为 Java 类

Java Stream 和 Filter by string Levenshtein 距离

c++ - __builtin_ctz 的 valgrind 错误

php - fatal error : Class 'Mustache_Engine' not found

ubuntu - SublimeLinter 无法确定 shell PATH

java - 为什么 Properties.list(PrintWriter out) 不打印任何内容?

java - 如何将 MouseListener 添加到 GridLayout 中的每个单独元素?

Java Applet,使背景透明