定时器编译问题

时间:2012-03-12 18:54:07

标签: java swing timer

我正在尝试运行一个我在这里http://docs.oracle.com/javase/7/docs/api/javax/swing/Timer.html找到的小例子。但是,我在timer = new Timer .....行上得到Type mismatch: cannot convert from void to Timer。我希望有人可以帮助我。

  int delay = 1000; //milliseconds
  ActionListener taskPerformer = new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
          //...Perform a task...
      }
  };
  new Timer(delay, taskPerformer).start();

谢谢

我的代码;

import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.Timer;


public class MyTimerTest 
{
    private JFrame frame = new JFrame();
    Container contentPane = frame.getContentPane();
    Timer timer;
    int delay = 1000; //a second

    public MyTimerTest()
    {
    }


    public void runTimer()
    {
        ActionListener taskPerformer = new ActionListener() 
        {
            @Override
            public void actionPerformed(ActionEvent arg0) {

            }     
        };

        timer = new Timer(delay, taskPerformer).start();
    }
    /**
     * @param args
     */
    public static void main(String[] args) 
    {

    }

}

2 个答案:

答案 0 :(得分:3)

您的代码不包含第timer = ...行。 我相信你试着写:

Timer timer = new Timer(delay, taskPerformer).start();

无法编译,因为方法start()无效。

将此行分为2:

Timer timer = new Timer(delay, taskPerformer);
timer.start();
编辑,哦,我的假设是正确的。我还没有看到你在代码的第二个片段中使用计时器的第二行。

答案 1 :(得分:0)

添加Swing Timer

import javax.swing.Timer

    public void runTimer()
    {
        ActionListener taskPerformer = new ActionListener() 
        {
            @Override
            public void actionPerformed(ActionEvent arg0) {

            }     
        };

        timer = new Timer(1000, taskPerformer).start();
    }