我试图将光标移动到随机生成的点。计算该点,然后将其添加到作为参数的坐标中。我只希望光标向下和向右移动,我通过将随机数的abs值添加到x和y来实现。然后光标应该移动到这个新位置并单击。我的问题是光标没有完全转到这个新位置并单击,但有时会转到不需要的位置,然后执行单击。是我的随机一代了吗?或者还有另一个原因,为什么光标移动到不应该的位置?
public static void randClick(int xCoord, int yCoord) {
Random rand = new Random();
int randX = -100;
int randY = -100;
int max = 10;
int min = -10;
int dev = 3;
while (!(randX <= max && randX >= min)) {
randX = (int) Math.round(rand.nextGaussian() * dev);
}
while (!(randY <= max && randY >= min)) {
randY = (int) Math.round(rand.nextGaussian() * dev);
}
System.out.println("randX: " + randX + "randY: " + randY);
System.out.println("xCoord + Math.abs(randX): " + (xCoord + Math.abs(randX))
+ " yCoord + Math.abs(randY): " + (yCoord + Math.abs(randY)));
try {
Robot robot = new Robot();
robot.mouseMove((xCoord + Math.abs(randX)), (yCoord + Math.abs(randY)));
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
} catch (Exception e) {
e.printStackTrace();
}
}
答案 0 :(得分:0)
我最近发现了一个与我制作的机器人类似的问题,它本来应该简单地执行点和放大器。点击动作。我会给它一个X和Y值来移动,并且每次都会通过不同的量在X和Y轴上关闭。我不确定是什么导致这种情况(可能是课堂上的一个错误?),但我确实找到了解决问题的方法。
我的解决方案是使用相同的坐标连续多次调用robot.mouseMove(X, Y)
方法。为了测试这一点,我在mouseMove()
方法之间进行了大量延迟,并在屏幕上观察了指针。它实际上在所需位置周围来回反弹,不可避免地陷入我想要的实际坐标。我知道这不是最漂亮的解决方案,但它解决了我的问题。
因此,在您的情况下,您可以在try
块中执行此操作:
Robot robot = new Robot();
int newXCoord = xCoord + Math.abs(randX);
int newYCoord = yCoord + Math.abs(randY);
robot.mouseMove(newXCoord, newYCoord);
robot.mouseMove(newXCoord, newYCoord);
robot.mouseMove(newXCoord, newYCoord);
robot.mouseMove(newXCoord, newYCoord);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
你可能不需要四次打电话,但我发现这是一个神奇的数字&#34;从未失败过。