You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Java实现鼠标平滑移动,替代Robot.mouseMove()的跳跃式移动?

Java实现鼠标平滑移动并配合快捷键操作

问题核心

Robot.mouseMove()是瞬间跳转坐标,导致鼠标移动生硬;同时你需要配合Ctrl+Shift+C快捷键完成Chrome元素选择,当前代码存在快捷键匹配问题(代码里用了VK_I而非VK_C)。

解决方案

下面是实现平滑移动的代码,包含自定义的平滑移动工具方法,同时修正了快捷键逻辑:

import java.awt.Robot;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.event.KeyEvent;
import java.util.Scanner;
import java.util.ArrayList;

public class SpeedTypeBot {
    static Scanner scanner1 = new Scanner(System.in);
    static ArrayList<String> arrayList = new ArrayList<>();

    // 平滑移动鼠标到目标坐标
    public static void smoothMouseMove(Robot robot, int targetX, int targetY, int stepDelay) throws InterruptedException {
        Point currentPos = MouseInfo.getPointerInfo().getLocation();
        int currentX = currentPos.x;
        int currentY = currentPos.y;

        int dx = targetX - currentX;
        int dy = targetY - currentY;
        int steps = Math.max(Math.abs(dx), Math.abs(dy));

        if (steps == 0) return;

        double stepX = (double) dx / steps;
        double stepY = (double) dy / steps;

        for (int i = 0; i < steps; i++) {
            currentX += stepX;
            currentY += stepY;
            robot.mouseMove(currentX, currentY);
            Thread.sleep(stepDelay);
        }
        robot.mouseMove(targetX, targetY);
    }

    public static void main(String[] args) throws Exception {
        Thread.sleep(3000); // 预留时间切换到Chrome窗口
        Robot r = new Robot();

        // 平滑移动到初始位置
        smoothMouseMove(r, 338, 389, 15);

        // 执行Ctrl+Shift+C快捷键(Chrome选择元素功能)
        r.keyPress(KeyEvent.VK_CONTROL);
        r.keyPress(KeyEvent.VK_SHIFT);
        r.keyPress(KeyEvent.VK_C);
        Thread.sleep(100);
        r.keyRelease(KeyEvent.VK_C);
        r.keyRelease(KeyEvent.VK_SHIFT);
        r.keyRelease(KeyEvent.VK_CONTROL);
        Thread.sleep(100);

        // 平滑向左移动2像素
        Point current = MouseInfo.getPointerInfo().getLocation();
        smoothMouseMove(r, current.x - 2, current.y, 15);
    }
}

关键细节

  • 平滑移动逻辑:通过MouseInfo获取当前鼠标位置,将总位移拆分为若干小步(每步约1像素),配合15ms左右的延迟模拟自然滑动,延迟数值可根据需求调整(越小越快)
  • 快捷键修正:将原代码的VK_I改为VK_C,匹配你需要的Ctrl+Shift+C功能;如果是要打开开发者工具,换回VK_I即可
  • 前置操作:运行程序前务必将Chrome切换到前台,否则快捷键无法触发对应功能

内容的提问来源于stack exchange,提问作者Kyotiq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 12:30:55