2

我一直在玩 java 中的自动化,因为它是跨平台的,有点试图为 linux 创建一个 autoit 替代方案。无论如何,我的这个脚本工作得很好,但我只想能够用热键切换一个动作。

我已经看过键绑定的文档(http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html),但要么它不是我想要的,要么我误解了文档,在这种情况下,请原谅我并指出正确的方向。

我的问题是我没有运行 GUI,我有一个 java 程序每 3 秒将鼠标移动到一个新的随机位置。这是我的代码:

public static void main(String[] args) {
        int[] screen = ScreenGetDim(); //get screen dimentions
        while (1==1) {
            int[] coordinates = new int[2]; //create an array for X and Y screen coordinates
            coordinates[0] = IntGetRandom( 0, screen[0] ); //get random X coordinate on screen
            coordinates[1] = IntGetRandom( 0, screen[1] ); //get random Y coordinate on screen
            MouseMove(coordinates[0], coordinates[1]); //move the mouse to screen coordinates
            Sleep(3000); //wait 3 seconds
        }
    }

该脚本的工作方式与应有的一样(ScreenGetDim()IntGetRandom()MouseMove()Sleep()都是可以完美运行的函数,并且我已在代码的其他位置进行了定义)。

我的目标是能够创建一个热键,当我在程序运行期间的任何时候按下它时,它可以做一些事情。

例如,如果我可以将 F11 设置为System.out.println("You pressed F11");每次按下时都会执行的热键,那就太好了。例如,在 AutoIt 中,您只需创建一个可以执行您想做的任何事情的函数,我们称之为Action(),然后您只需按 F11HotKeySet("{F11}", "Action")即可让Action()运行。我正在寻找一个 Java 等价物。

感谢您的帮助!

4

1 回答 1

1

我认为您正在寻找事件处理。您需要实现接口 KeyListener,这使您可以创建在按下按钮时调用的函数,该函数将如下所示

         public void keyPressed(KeyEvent e) {
         switch (e.getKeyCode()) {
         //TODO list of all KeyCodes of events and code you want to execute(F11 keycode = 122)
         }
         }

之后,您需要将 KeyListener 设置为侦听您的界面,在这里帮助您可能会有些棘手,因为我不知道您使用的是哪种 GUI。当我使用 KeyListeners 时,我使用了 Canvas,如果您使用它,它看起来像这样

        canvas.addKeyListener(this);

我希望这就是你要找的

于 2013-10-21T07:19:27.210 回答