前言
使用util包中的Timer类实现赛车移动
效果
代码
package P1;
import javax.swing.*;
import java.awt.*;
import java.util.Timer;
import java.util.TimerTask;
public class thread2 extends JFrame
{
public thread2(){
add(new drawCar());
}
public static void main(String[] args)
{
thread2 frame=new thread2();
frame.setTitle("赛车");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800,500);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
static class drawCar extends JPanel{
private int x=0;
public drawCar(){
Timer t=new Timer();//创建定时器Timer对象
MyTask task=new MyTask();//创建MyTask类
t.scheduleAtFixedRate(task,0, 1000); //间隔1秒的速率执行MyTask类中的run方法
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawRect(0+x,300,50,50);
g.drawOval(0+x,350,25,25);
g.drawOval(30+x,350,25,25);
x=x+4;
System.out.println(x);
}
class MyTask extends TimerTask
{
@Override
public void run() //run方法
{
repaint();
}
}
}
}
思路
绘制一个小车,预留一个x坐标的位置变量。每次调用run方法,都对x进行增加,然后调用repaint方法,就可以重新绘制当前的图像,故看起来像小车在不断的向前移动。
移动了util包内timer类的TimerTask类。