如何在Java中创建计时器?

时间:2014-01-02 16:57:01

标签: java

我是这种编程语言的新手,当我创建计时器时,出现了错误。 首先我导入:

import java.util.Timer;

然后创建了计时器:

    public class Road extends JPanel implements ActionListener {


    Timer Timer = new Timer();
    timer.schedule();
    Image img = new ImageIcon("res/Road.png").getImage();

    Player p = new Player();

    public void paint(Graphics g){
        g = (Graphics2D) g;
        g.drawImage(img, p.layer1, 0, null);
        g.drawImage(p.img, p.x, p.y, null);
    }

    public void actionPerformed(ActionEvent e){
        p.move();
        repaint();
    }

}

但是在lane timer.schedule()中,我收到错误,这是令牌“schedule”上的语法错误或此令牌后的标识符

4 个答案:

答案 0 :(得分:5)

Timer Timer = new Timer();

Timer 保留,但应更改为timer以匹配Java命名约定。

您的代码位置错误;把它放在一个方法中。

最后,不要使用Util计时器,请使用Swing计时器。文档here

答案 1 :(得分:4)

Java不允许您在构造函数或方法之外编写语句。将您的行移动到cinstructor或您想要的任何方法。

  Timer timer= new Timer(); //declaration allows
   timer.schedule(); // not allowed.

只有声明允许在方法和构造函数之外。

作为旁注,有静态块允许你这样做,我认为你不需要。

我坚信你要在构造函数中编写它,就像Road正在构建时,你正在安排计时器。

答案 2 :(得分:2)

首先,使用javax.swing.Timer进行Swing程序,而不是java.util.Timer

然后

Timer timer = new Timer(duration, this);
timer.start();

此外,对.start()的调用需要来自构造函数或某些方法

Timer timer;

public Road(){
    timer = new Timer(1000, this);
    timer.start();
} 

作为旁注。请勿覆盖paint覆盖paintComponent并致电super.paintComponent(g);

protected void paintComponent(Graphics g){
    super.paintComponent(g);
    Graphics2D g2 = (Graphics2D)g;
    g2.drawImage(img, p.layer1, 0, null);
    g2.drawImage(p.img, p.x, p.y, null);
}

答案 3 :(得分:2)

区分大小写:

Timer Timer = new Timer();
      ^---- capital T
timer.schedule();
^---lower case T