[英]Java move mouse
我正在編寫一個應用程序,它將講授使用計算機的基本知識,並且需要移動鼠標以顯示您必須執行的操作。 我嘗試了這個:
public static void click(Point p) throws AWTException{
Robot r = new Robot();
r.mouseMove(p.x, p.y);
r.mousePress(InputEvent.BUTTON1_MASK);
try { Thread.sleep(100); } catch (Exception e) {}
r.mouseRelease(InputEvent.BUTTON1_MASK);
}
一切正常,但鼠標不移動便傳送到指定的坐標。 所以我的問題是:如何有效地模擬鼠標的移動,單擊左右,拖放(就像您按住鼠標按鈕一樣)
public static void click(Point p) throws AWTException{
Robot r = new Robot();
gradualMouseMove(p, r);
r.mousePress(InputEvent.BUTTON1_MASK);
try { Thread.sleep(100); } catch (Exception e) {}
r.mouseRelease(InputEvent.BUTTON1_MASK);
}
private static void gradualMouseMove(Point pointIn, Robot robot) throws InterruptedException {
//TO ADJUST SPEED OF MOVEMENT
//CHANGE: 1:sleep duration 2:deltaX # 3:deltaY #
Point mouseLocation; //Point for updating the currentLocation
int deltaX; //X coordinate update value
int deltaY; //Y coordinate update value
boolean xInProgess = true; //Stop condition for X
boolean yInProgess = true; //Stop condition for Y
do{
//update Mouse Location
mouseLocation = MouseInfo.getPointerInfo().getLocation();
//calculate X coordinates
if(pointIn.getX() - mouseLocation.getX() > 2){
deltaX = 1; //Mouse is LEFT of Destination
}else if (pointIn.getX() - mouseLocation.getX() < -2){
deltaX = -1; //Mouse is RIGHT of Destination
}else{
xInProgess = false; //X Done
deltaX = 0;
}
//calculate Y coordinates
if(pointIn.getY() - mouseLocation.getY() > 2){
deltaY = 1; //Mouse is ABOVE Destination
}else if (pointIn.getY() - mouseLocation.getY() < -2){
deltaY = -1; //Mouse is BELOW Destination
}else{
yInProgess = false; //Y Done
deltaY = 0;
}
//move mouse on Screen by adjustment amount
robot.mouseMove((int)(mouseLocation.getX()+deltaX), (int)(mouseLocation.getY()+deltaY));
Thread.sleep(6); //pause to slow down movement
}while(xInProgess || yInProgess); //loop until complete on X & Y
}
上面的gradualMouseMove方法是將鼠標“滑動”到目標點的簡單版本。
*****請注意不要在屏幕外使用點。 如果鼠標永不到達那里,這可以防止循環退出。 如果這是一個問題,您可以添加計數以某個值結尾。******
**加法-您可以在其中添加一些數學運算,以使它成直線到達目的地。 (而不是目前的高原)**
但是,這應該為您提供啟動板。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.