2011-11-16 62 views
1

这个问题正在扩展另一个我通过Stackoverflow(Update JLabel every X seconds from ArrayList<List> - Java)获得了帮助,使我的标签每X秒更新一次。无论如何...我现在想增加或降低计时器的速度,并让它通过文件遍历一遍。用按钮增加或减少摆动计时器速度?

我打印语句看起来像这样:(INT TM设定在300目前...)

private void printWords() { 
     final Timer timer = new Timer(tM, null); 

     ActionListener listener = new ActionListener() { 
      private Iterator<Word> w = words.iterator(); 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       if (w.hasNext()) { 
        _textField.setText(w.next().getName()); 
        //Prints to Console just Fine... 
        //System.out.println(w.next().getName()); 
       } 
       else { 
        timer.stop(); 
       } 
      } 
     }; 
     timer.addActionListener(listener); 
     bPlay.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       timer.start(); 
      } 
      }); 
     bPause.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       timer.stop(); 
      } 
      }); 

} 

我想要做的是增加或与其他几个按钮的降低速度,更快和较慢。

我该如何改变中间使用的定时器间隔?

bFaster.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       tM = 100; 
      } 
      }); 
     bSlower.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       tM = 1000; 
      } 
      }); 

感谢您的任何想法。

你的, JF

+0

,我发现这里的东西:http://stackoverflow.com/questions/6791647/androids-countdowntimer-increase-or-decrease-the-指出笔记我不能做这样的事情。任何人? – jasonflaherty

回答

3

你就不能下?时间将不会是完美的,但可能不是明显给用户:

bFaster.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      tM = 100; 
      timer.stop(); 
      timer.setDelay(tM); 
      timer.start(); 
     } 
     }); 
    bSlower.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      tM = 1000; 
      timer.stop(); 
      timer.setDelay(tM); 
      timer.start(); 
     } 
      }); 
+0

谢谢Staticman!这对我来说确实很好。这是在Java中使用计时器的好方法吗?我对此不熟悉... – jasonflaherty

+2

+1,但不需要停止/重新启动计时器,只需调用setDelay()方法即可。定时器下次启动时生效。如果您停止计时器,则在重复延迟开始之前再次启动计时器时会发生初始延迟。 – camickr

+0

感谢camickr :) – jasonflaherty