在各大网站和博客上找了许久,并没有找到一份详细的实现双缓冲的详解,困惑了,不过幸好最终弄懂了,分享一下。
下面是代码详解:
///////////////////////////////////////////////////////////////////////////实现一个矩形在图面上斜移动;
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();
}
}