repaint() - update() - paint()一般在程序中我们都会重装paint()方法以执行重绘画面的动作,但实际上除了paint()以后,update()也执行了一部分的工作,这部分工作包括用默认的背景颜色填充,设置前景色等,由于这部分一般都无须用户参考,所以一般都update()自动完成,然后update()再调用paint()执行用户自定义的绘制操作.
一般情况不用重写update()方法。但是如果你填充背景的颜色跟paint()中的颜色不一样的时候就会有闪烁感。可以重写update方法,事实上,在用双缓冲画图时,一般都会选择重装update()而不是paint()方法,由于在执行paint()方法之前,update()还执行填充背景的动作,所以当重绘的速度很大时,填充背景的动作将很明显,也即闪烁很大,也将,如果在paint()中用双缓冲的话实际上起不了效果.而如果用update()的话就可以双缓冲达到预期的效果. 当在程序中需要重绘操作时,我们一般会用repaint()而不是直接调用update()或者paint(),repaint()将调用update().而在各种awt,swing组件需要自动重新绘制时,程序也一般也会自动调用repaint()方法
对于轻量级组件,一般是重写 paint 方法以快速的绘制组件,但是对于重量及组件,由于重新绘制时间长,容易产生闪烁的现象,所以一般是采用重写 update 方法,利用双缓冲图片来解决闪烁的问题。
转自novelly的博客详细可自行查询 |