3

我正在创建一个创建门(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();
}
4

1 回答 1

2

代码的逻辑与您编写的相反。你说如果时间在流逝,那么你什么也不想做。但是,如果计时器没有运行,代码会说什么都不做。只是一个简单的!timer.isRunning()应该应用到正确的行。

于 2014-02-05T17:37:44.327 回答