在没有UI组件的情况下聆听Java中的按键操作

时间:2014-07-14 18:24:36

标签: java

我正在尝试编写最能被推测为脚本的内容,以便多次点击浏览器上的按钮而不会停止。我可以使用java.awt.Robot类无限制地进行按键操作,但我遇到的问题是编写正确的激活器/中断器;我不知道如何让Java听取键盘命令(我想在按F3时启动/停止)而不使用监听器,如果我没有弄错,则需要将监听器添加到UI组件中。我该怎么做呢?目前我有:

    public static void main(String[] args) throws Exception
    {
       final Robot robot = new Robot();
            robot.delay(10000);
            while (true)
            {
                robot.mousePress(InputEvent.BUTTON1_MASK);
                robot.delay(1000);
                robot.mouseRelease(InputEvent.BUTTON1_MASK);
            }
     }   

我意识到在Jython或Groovy中它可能非常简单,但我仍然很好奇。

1 个答案:

答案 0 :(得分:2)

据我所知,在Java中没有办法做到这一点。由于键盘命令由操作系统处理,因此让Java执行此操作的唯一方法是编写一些低级别的JNI。我通过在C ++中编写一个X事件处理程序(用于基于* nix的操作系统)完成了类似的操作。由于Java中的关键事件是每个GUI组件,因此无法在全球范围内执行此操作。当我编写X事件句柄时,我遇到了处理限制的挑战,即一次只有一个应用程序可以获取密钥。 (XGrabKey)。