如果满足特定条件,重置计时器?

时间:2015-08-24 11:54:39

标签: java timer

我有一个事件监听器,可以检测鼠标在程序的某个窗格中移动的时间。从这一点来说,如果鼠标闲置太久,我希望能够执行一些操作。

我今天早些时候已经看了一遍,试图找到一个解释和示例详细说明如何启动,停止/取消和重置计时器但是已经用不同方式轰炸尝试并做这让我很困惑。

我正在关注来自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();
            }       
        }
    }
}

0 个答案:

没有答案