Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中创建计时器?_Java - Fatal编程技术网

如何在Java中创建计时器?

如何在Java中创建计时器?,java,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();

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

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”或该令牌后面的标识符上的语法错误

Timer Timer = new Timer();
Timer
未保留,但应更改为
Timer
,以匹配Java命名约定

你的代码放错地方了;把它放在一个方法中


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

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

  Timer timer= new Timer(); //declaration allows
   timer.schedule(); // not allowed.
只有声明允许在方法和构造函数之外

作为旁注,静态块允许你做同样的事情,我认为你不需要


我坚信您将在构造函数中编写它,就像Road正在构建时您正在调度计时器一样。

首先,对swing程序使用
javax.swing.timer
,而不是
java.util.timer

然后

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

Timer timer;

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

作为旁注。不要覆盖
paint
覆盖
paintComponent
并调用
super.paintComponent(g)

区分大小写:

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

不能在类的主体中执行代码。您需要在方法、构造函数或实例初始值设定项块中执行此操作。使用
javax.swing.Timer
not
java.util.Timer
No它不是保留的。他导入了Timer,保留了它。不过,与类相同的namimg变量是超级控制的。
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);
}
Timer Timer = new Timer();
      ^---- capital T
timer.schedule();
^---lower case T