我是这种编程语言的新手,当我创建计时器时,出现了错误。 首先我导入:
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”上的语法错误或此令牌后的标识符
答案 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