A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

张冉冉

初级黑马

  • 黑马币:0

  • 帖子:5

  • 精华:0

© 张冉冉 初级黑马   /  2012-4-24 19:27  /  2204 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张冉冉 于 2012-4-26 14:39 编辑

repaint方法会调用update方法,update方法默认调用paint方法,调用完update方法后repaint方法不会继续调用paint方法吧?轻量级组件和重量级组件分别有哪些,希望能多举几个例子,然后repaint方法在轻量级组件和重量级组件上调用有什么区别?

1 个回复

倒序浏览
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的博客详细可自行查询

评分

参与人数 1黑马币 +5 收起 理由
职业规划-刘倩老师 + 5 你还是很有心的,赞一个哈!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马