使用按钮增加或减少摆动定时器速度?

时间:2011-11-16 19:09:40

标签: java swing timer

这个问题正在扩展另一个我通过Stackoverflow(Update JLabel every X seconds from ArrayList<List> - Java)获得帮助,每隔X秒更新一次标签。无论如何......我现在想要提高或降低计时器的速度,并让它循环遍历文件。

我的print语句如下:( 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

1 个答案:

答案 0 :(得分: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();
        }
          });