paint()是在组件第一次显示时调用,完成组件的绘制。  
update()进行初始化(背景色填充、设置组件前景色)后调用paint()绘制组件。  
repaint()则调用update()。它之所以存在是因为要支持以不同的方式进行update()操作,如:repaint();repaint(long  time);repaint(int  x,int  y,int  width,int  height),无参的repaint()只是对update()进行简单的调用。  
 
可以说,paint()是最原子的操作,update()则允许在它之上对它的外观进行一些定制,repaint()则偏重于定制调用的方式:你可以在指定时间间隔后进行重画,也可以在指定区域内绘制组件,等等。  
重载repaint吧,我记不太清楚了,你搜索一下论坛。

解决方案 »

  1.   

    闪烁原因有两种:
    1. 绘制一幅图像时间太长,在一副图显示过程中出现闪烁.
    2. 每次调用paint()方法时,重新刷新整个屏幕,在图像帧之间出现闪烁.
    消除第一种原因2种方法:
    1. 用ImageObserver接口和MediaTracker类进行跟踪,等待图像完全装载完毕,再绘制.
    2. 使用Graphics类的ClipRect()方法,限制屏幕刷新的区域.
    消除第二种原因2种方法:
    1. 重载update()方法
    2. 使用双缓冲.