import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TankClient extends Frame{
int x=50,y=50;
Image offScreemImage=null;//双缓冲技术,定义一张虚拟图像
@Override
public void paint(Graphics g) {
Color c=g.getColor();
g.setColor(Color.red);
g.fillOval(x, y, 30, 30);
g.setColor(c);//将原来的颜色换回来
y+=5;
}
//repaint()时,先调用update()
@Override
public void update(Graphics g) {
if(offScreemImage==null){
offScreemImage=this.createImage(800,600);
}
Graphics gOffSream=offScreemImage.getGraphics();
Color c=gOffSream.getColor();
gOffSream.setColor(Color.green);//刷新面板
gOffSream.fillRect(0, 0, 800, 600);
gOffSream.setColor(c);
paint(gOffSream);//画在虚拟图像上
g.drawImage(offScreemImage, 0, 0, null);//将虚拟图像一次性贴到Frame上
}
public void lauchFrame(){
this.setLocation(400,300);
this.setSize(800,600);
this.setTitle("TankWar");//该标题栏的文字
this.addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});//关闭窗口
this.setResizable(false);//不让窗口改变大小
this.setBackground(Color.green);
setVisible(true);
(new Thread(new PaintThread())).start();//启动线程
}
public static void main(String args[]){
TankClient tc=new TankClient();
tc.lauchFrame();
}
private class PaintThread implements Runnable{
public void run(){
while(true){
repaint();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}