我正在使用Java中的Robot类生成鼠标按键:
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
然而,我希望机器人能按下按钮一段时间。我该如何实现这个功能?
我正在使用Java中的Robot类生成鼠标按键:
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
在两个动作之间添加一些睡眠时间(以毫秒为单位):
Thread.sleep(long millis);
robot.mousePress(InputEvent.BUTTON1_MASK);
try { Thread.sleep(1000); } catch(Exception e) {} // Click one second
robot.mouseRelease(InputEvent.BUTTON1_MASK);
Robot.delay(long millis);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.delay(1000); // Click one second
robot.mouseRelease(InputEvent.BUTTON1_MASK);
Robot.delay(long)
,它已经失效了。在过去的使用中给我带来了很多痛苦。这个库方法会吞掉中断。也就是说,在catch块中它不会重置标志,因此你不能编写任何合理的可中断任务,而这些任务需要使用delay
。相反,应该使用TimeUnit.MILLISECONDS.sleep(long timeout)
,并且始终在catch (InterruptedException e)
块中调用"Thread.currentThread().interrupt();"来将中断标志传播到线程的所有者(例如,使用Executors
的静态方法之一创建的某个标准ExecutorService
)。 - vitrums我做过这个,很简单:当你检测到鼠标被按下时,保存System.currentTimeMillis()
。当你检测到鼠标被释放时,只需检查它被按下了多长时间。
如果你想在一定的时间后执行操作,即使鼠标仍然被按下,你可以启动一个线程,在按下时保持所需的时间,并在释放时中断它。如果线程在你想要的时间内没有被中断,操作将被执行。