簡體   English   中英

Java移動鼠標

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM