如何使用Timer isRunning?

时间:2012-10-14 13:08:57

标签: java javax.swing.timer

我正在创建一个创建门(AND,OR等)的程序,但是当我想创建一个SR锁存器时,我需要使用一个计时器。

因此,当调用此方法(inputChanged)时,应检查计时器是否正在运行。如果它正在运行它应该什么都不做。 (这是我被卡住了......) 否则,它应检查新值是否偏离旧值(getOutputValue())。

如果是,它应该保存新值并在稍微延迟后发送中断信号。我使用setInitialDelay()作为初始延迟,但我不知道如何发送中断信号。

我想知道我在这段代码中做错了什么,因为它运行得不好....

public void inputChanged()
{
   timer = new javax.swing.Timer(delay, new ActionListener()
   {
       public void actionPerformed(ActionEvent event) 
        {
            // Check if timer is running.
           if(timer.isRunning())
           {
               boolean value = calculateValue(); 

               //  new Value            old Value
               if(calculateValue() != getOutputValue())
               {
                   timer.setInitialDelay(delay);
                   timer.stop();
               }
               outputChanged(value);
           }
        }   
    });
    timer.start();
}

1 个答案:

答案 0 :(得分:2)

代码的逻辑与你所写的相反。你说如果时间在运行那么你什么都不想做。但是,如果计时器没有运行,代码说不执行任何操作。只需将一个简单的!timer.isRunning()应用于正确的行。