我把一些代码放在一起来制作这个robot.mousePress和robot.mouseRelease程序,我可以设置为每500毫秒点击一次。唯一的一件事是,当我打开程序时,它工作得很好。关机才是问题所在。我必须完全退出eclipse只是为了让程序停止。
如何在代码中添加一个keyListner,这样我就可以按一个按钮来阻止程序运行,而不必退出ADT?
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.InputEvent;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class AutoClicker {
public static int rate = 0;
public static void main (String[] args) {
while (rate == 0){
try{
System.out.println("Speed of the auto-clicker (in miliseconds):");
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
try {
rate = Integer.parseInt(in.readLine());
if (rate < 500) {
rate = 0;
System.out.println("Must be at least 500 miliseconds.");
}
} catch (NumberFormatException ex) {
System.out.println("Error - please try again.");
}
} catch (IOException e) {}
}
try {
Robot robot = new Robot();
while (true) {
try {
Thread.sleep(rate);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
} catch (InterruptedException ex) {}
}
}catch (AWTException e) {}
}
}发布于 2013-12-19 17:06:45
可以使用此方法添加全局键侦听器。
How can I listen for key presses (within Java Swing) across all components?
末端的无限循环是罪魁祸首。将其更改为布尔变量,侦听器将其设置为false。
发布于 2013-12-19 17:10:18
while (true) {
try {
Thread.sleep(rate);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
}
catch (InterruptedException ex) {}
} 这看起来就像你无限循环的源头。也许可以尝试实现某种类型的布尔变量,只要您希望程序停止,就可以对其进行修改。
https://stackoverflow.com/questions/20686110
复制相似问题