谁有解决Canvas闪烁的经验?
各位是不是大多采用Swing,不过偶还是熟悉AWT:
public class MyCanvas extends Canvas implements Observer,MouseListener
为了解决闪烁问题,paint方法是这样的:
public void paint(Graphics h)
   {Rectangle r=getBounds(); 
    Image db=createImage(r.width,r.height);
    Graphics g=db.getGraphics();
    
    //通过g来画
    g.setColor(Color.green.darker().darker()); 
    g.fillRect(0,0,r.width,r.height);
    h.drawImage(db,0,0,this); 
   }
还有:  public void update(Graphics g) {paint(g);}
偶的程序中就是这样编的,但有时还是有闪烁
偶只剩最后一招了:在update方法中改成repaint(x,y,width,height) 
但这样会增加程序的复杂度
偶发现把mouseClicked方法中的代码移到mousePressed方法后
闪烁有所减少,但也没有完全消除
这是不是JVM的问题?
              
------解决方案--------------------建议采用
双缓冲技术。去网上查找。
------解决方案--------------------http://www.iteye.com/topic/624169
------解决方案--------------------其实 闪烁就是 因为先画了一遍底色引起的
 g.setColor(Color.green.darker().darker()); 
    g.fillRect(0,0,r.width,r.height);
所以要么就用image直接覆盖掉上次的内容
要么就只能用双缓存,不要让画底色的行为直接显示出来。