java双缓冲

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();

}

}

}

}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值