java中如何在GUI上实现双缓冲技术

在各大网站和博客上找了许久,并没有找到一份详细的实现双缓冲的详解,困惑了,不过幸好最终弄懂了,分享一下。

下面是代码详解:

///////////////////////////////////////////////////////////////////////////实现一个矩形在图面上斜移动;

package hgf;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.net.*;
import java.io.*;
import javax.swing.*;
import java.util.*;
public  class demo1 extends JFrame{
private int x=100;
private int y=100;
Image i;
Graphics res;
Rectangle r1=new Rectangle(x,y,50,50);
public void loop(){
while(true){
r1.x++;
r1.y++;
repaint();
for(int i=0;i<9999999l;i++){

}
}
}

//绘制图形,并实现双缓冲
public void paint(Graphics g){


//if(i==null){
 i=createImage(getWidth(),getHeight());
 res=i.getGraphics();
//  }
 res.setColor(Color.yellow);
 res.fill3DRect(r1.x, r1.y, r1.width, r1.height,true);
 g.drawImage(i, 0,0, null);
}
public demo1(){
setTitle("move");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setSize(600,600);
loop();
}
//main方法
public static void main(String[] args) throws Exception {
new demo1();
}  
}

你可能感兴趣的:(java中如何在GUI上实现双缓冲技术)