repaint()和显示时间
来源:互联网 发布:淘宝活动优惠券名称 编辑:程序博客网 时间:2024/06/07 10:00
显示时间:https://zhidao.baidu.com/question/403810009.html
repaint,update和paint
这三个方法在Component中定义,由于awt,swing组件都直接或间接继承自Component,所以几乎所有的awt,swing组件都有这三个方法.这三个方法主要是用于组件的界面绘制.
这三个方法执行顺序repaint() - update() - paint()
一般在程序中我们都会重装paint()方法以执行重绘画面的动作,但实际上除了paint()以后,update()也执行了一部分的工作,这部分工作包括用默认的背景颜色填充,设置前景色等,由于这部分一般都无须用户参考,所以一般都update()自动完成,然后update()再调用paint()执行用户自定义的绘制操作.
一般情况不用重写update()方法。但是如果你填充背景的颜色跟paint()中的颜色不一样的时候就会有闪烁感。可以重写update方法,事实上,在用双缓冲画图时,一般都会选择重装update()而不是paint()方法,由于在执行paint()方法之前,update()还执行填充背景的动作,所以当重绘的速度很大时,填充背景的动作将很明显,也即闪烁很大,也将,如果在paint()中用双缓冲的话实际上起不了效果.而如果用update()的话就可以双缓冲达到预期的效果.
当在程序中需要重绘操作时,我们一般会
Java里repaint()是重绘component的方法;
repaint()方法用于重绘组件,该方法有下面四种形式:
1。public void repaint()
2。public void repaint(long tm)
//指定调用update方法之前等待的最大毫秒数tm
3。public void repaint(int x,int y,int width,int height)
//重绘组件的指定矩形区域
4。public void repaint(ling tm,int x,int y,int width,int height)
repaint方法不总是马上执行,Java虽然会尽可能快的执行repaint,当Applet运行在较慢的平台上或计算机较忙时,应该考虑使用第2或4种repaint方法,指定在多长时间内必须执行repaint,否则就放弃。
repaint()这个方法是一个具有刷新页面效果的方法,如果你要页面进行重画就可以调用.一般都是在AWT的图形绘制当中调用的到.那么该方法具体的工作原来是怎么样的呢?看下面的结构流程图你就可以大概的了解了:
repaint()方法
|
|
V
AWT线程--->paint()方法-->图形绘制
|
|
V
update()方法--->paint()方法--图形绘制
从上面的流程图可以看出,在绘制动画图形时候如果没有调用repaint()方法的时候直接就是由线程调用paint()方法进行绘制,用repaint()进行刷新显示.但是这样的动画会有个缺点(这样的效果绘制出来会有闪烁).想想做出来的动画总是隔一段时间就闪烁,有人会看吗?那么应该怎么去除闪烁呢?我再下面的文章中会讲到.这里主要的是说明repaint()这个方法.
在调用了repaint()的时候我门可以看出,它并不是直接就去绘制动画(调用paint()),而是通过调用AWT线程在由线程去调用另一个方法update()再由update()调用画笔paint()方法进行绘制.那么这里为什么要多做一步呢?这样是不是为我门多增加代码的书写量呢?回答是当然不会,如果你不调用repaint()那么就不能实现每一次的刷新显示,就只会绘制重叠的图形,不能一张一张的绘制出来.那么其中调用的update()到底是起到什么样的作用呢?
update():清除当前显示并调用paint()方法.当然这个update()方法是可以被修改的,我门在另一篇文章关于"双缓冲技术"中会给大家讲到这点.
综合上面的介绍可以总结出repaint()的工作原理:repaint()通过调用线程再由线程去调用update()方法清除当前显示并再调用paint()方法进行绘制下一个需要显示的内容.这样就起到了一种图片的交替显示从而在视角上形成了动画.
- repaint()和显示时间
- repaint(),update()和paint()
- repaint(),update()和paint()
- 关于reflow和repaint
- repaint
- Qt中的Sleep()和repaint()
- Web页面Repaint和Reflow
- repaint ()和update()的区别
- swing中的validate 和 repaint
- repaint方法使用和说明
- reflow和repaint理解总结
- JavaScript中的Repaint和Reflow
- repaint和reflow理解总结
- 显示日期和时间
- JavaScript实现显示时间,暂停时间,和取消显示时间
- Swing组件的updateUI()和repaint()
- 如何减少浏览器repaint和reflow
- QT update和repaint的区别
- 在开始强化学习前,你所需要了解的知识。
- 总结C语言操作符
- Python获取脚本所在目录路径
- 数据结构-矩阵快速转置
- 10---------二叉树的算法的简单应用
- repaint()和显示时间
- 高新集训D1D2考试总结
- (Deepin 15.4) Qt5.9的下载及安装——开始Qt之旅
- Spark Streaming之妙用foreachRDD和foreachPartition
- bzoj3786: 星系探索 //ETT
- 一份年薪30万的Android面试宝典,附答案
- python学习之路(常用系统模块1--时间模块)
- TCP和UDP的区别
- 将php程序伪装jsp