最近在同一个Jpanel中绘制多个图像的时候会出现闪烁问题。
事实上问题并不高深,闪烁的原因是因为多次绘制延迟。只需要先将图片绘制在缓冲区中,然后一次性绘制到Jpanel上就呢解决这个问题。
public class GamePanel extends JPanel {
public GamePanel() {
}
private Prisoner prisoner;
private Map map;
private Guard guard;
public void display(Prisoner prisoner,Map map,Guard guard){
this.prisoner=prisoner;
this.map=map;
this.guard=guard;
this.paintComponent(this.getGraphics());
}
@Override
protected void paintComponent(Graphics g) {
// TODO Auto-generated method stub
// 重新显示 画好只有一次性显示出来
Image image = createImage(Global.MAX_WIDTH*Global.CELL_SZIE, Global.MAX_HEIGHT*Global.CELL_SZIE);
Graphics g2=image.getGraphics();
g2.setColor(new Color(0xffffff));
g2.fill3DRect(0, 0, Global.MAX_WIDTH*Global.CELL_SZIE, Global.MAX_HEIGHT*Global.CELL_SZIE, true);
this.map.drawme(g2);
this.guard.drawme(g2);
this.prisoner.drawme(g2);
g.drawImage(image, 0, 0, null);
}
}