我一直在玩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(),然后您只需执行HotKeySet("{F11}", "Action")
即可按下F11, Action()随时运行。我正在寻找Java等价物。
感谢您的帮助!
答案 0 :(得分: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设置为Listen to your Interface,在这里帮助你可能会有点棘手,因为我不知道你正在使用什么样的GUI。当我使用KeyListeners时,我使用了Canvas,如果你使用它,它看起来像这样
canvas.addKeyListener(this);
我希望这就是你要找的东西