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

如何使用AWT包中的Robot类实现双击事件?

使用Java Robot类实现双击操作

我明白你要的是用Robot类来实现双击,而不是借助MouseEvent的方案——你当前的代码只能完成单次点击,问题在于双击需要系统识别到快速连续的两次左键按下+释放动作,中间必须加一个极短的延迟,不然系统会把它们当成两次独立的单击。

下面是调整后的完整代码,能实现标准的双击效果:

try {
    Robot robot = new Robot();
    // 移动鼠标到目标坐标(305, 450)
    robot.mouseMove(305, 450);
    
    // 第一次点击:按下+释放左键
    robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
    robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
    
    // 关键:添加短延迟,模拟人类双击的间隔(一般100-200ms都可以)
    Thread.sleep(100);
    
    // 第二次点击:重复按下+释放动作
    robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
    robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
    
} catch (AWTException e) {
    e.printStackTrace();
} catch (InterruptedException e) {
    e.printStackTrace();
}

几个关键点说明:

  • Thread.sleep(100):这个延迟是核心,必须加!系统判断双击的时间阈值通常在200ms以内,所以设置100ms既能保证系统识别为双击,又不会显得动作太生硬。
  • 每次点击都要完整执行mousePress和mouseRelease:单独的按下或释放都不会触发完整的点击动作,必须成对出现。
  • 异常处理:Robot的构造方法会抛出AWTException(比如系统不支持Robot操作时),Thread.sleep会抛出InterruptedException,所以必须捕获这些异常。

如果你的系统双击阈值比较特殊,也可以调整sleep的时间,比如改成150ms试试,找到最适合的间隔就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:20:00