我有一个事件监听器,可以检测鼠标在程序的某个窗格中移动的时间。从这一点来说,如果鼠标闲置太久,我希望能够执行一些操作。
我今天早些时候已经看了一遍,试图找到一个解释和示例详细说明如何启动,停止/取消和重置计时器但是已经用不同方式轰炸尝试并做这让我很困惑。
我正在关注来自here的计时器示例,并针对我自己的情况实施
当运行以下代码时,每次鼠标停止时都会输出“A”。这是不正确的,就好像我停止鼠标,快速移动然后再停止它,产生了2套“A”。
这进行了多次停止产生。
我相信我错过了一个'重置计时器'功能,当鼠标变为移动状态时会调用该功能。
我该如何实现?/甚至是问题吗?
public class SomeClass{
//...some fancy code...
if (! isNowMoving) {
System.out.println("Mouse stopped!");
//Start Timer
new PrintingA(5);
} else if (isNowMoving){
System.out.println("MouseMoving");
//cancel timer & reset ready to start
}
public class PrintingA {
Timer timer;
public PrintingA(int seconds) {
timer = new Timer();
timer.schedule(new PrintingTask(), seconds * 1000);
}
class PrintingTask extends TimerTask{
@Override
public void run() {
System.out.println("A");
timer.cancel();
}
}
}
}