日期:2014-05-19  浏览次数:20822 次

很奇怪的画图闪烁问题,纠结
求大神帮忙啊,我这样画了一个圆,然后把这个圆放进了一个Thread,让他每次都执行都重新画一个圆,
实际上我是想写一个Ping功能,然后这个小圆点的颜色会根据延迟时时改变。
部分代码如下:
pp=new Panel(){
  public void paint(Graphics gs) {
super.paint(gs);
gss=gs;
gss.setColor(new Color(r,g,b));
gss.fillOval(0,0,10,10);
}
};
pp.setBounds(235, 75, 10, 10);
jp.add(pp); //jp为一个JPanel
问题是:运行的时候鼠标不再窗口内没问题,可是鼠标一移到窗口,这个小圆点就会消失,或者闪烁。
之前百度过缓冲,可是都不是我这样的写法,其他写法我试过,连图都画不出来,更别说解决闪烁了。
求大神指导啊

------解决方案--------------------
在你的类中定义一个全局的图像:
Image offScreenImage = null;
添加一个update方法:
Java code

public void update(Graphics g) {
        if(offScreenImage == null){
            offScreenImage = this.createImage(GAME_WIDTH,GAME_HEIGHT);
        }
        Graphics gOffScreen = offScreenImage.getGraphics();
        Color c = gOffScreen.getColor();
        gOffScreen.setColor(Color.BLACK);
        gOffScreen.fillRect(0, 0, GAME_WIDTH, GAME_HEIGHT);
        gOffScreen.setColor(c);
        paint(gOffScreen);
        g.drawImage(offScreenImage,0,0,null);
    }