java中repaint()与update()有什么区别
展开全部
swing是通过双缓冲取消闪烁的,
双缓冲就是使用两幅图,在屏幕上显示一幅图,然后在没显示在屏幕上的那份图上更新,更新了以后显示,而刚刚显示在屏幕的那幅成了离屏图像,这样不断交互;
怎么产生闪烁的呢,一般在更新的时候需要用背景色填充一下然后在画组件的样子,如果不用双缓冲,那填充背景色被你看在眼里产生闪烁;
awt是重量级的,swing是轻量级的,awt和swing的paint,repaint,update不一样;
repaint是将重绘的事件添加到事件队列里,这只是表达一个请求,事件队列有空了就重绘;
paint是真正的绘制(包括组件paintcomponent,边框paintborder,子组件paintchildren);
swing里update几乎不做什么事情;
swing里还有两个方法,revalidate和dolayout,后者是重新调整布局使之有效,前者即调用了后者,又对invalidate做出响应
双缓冲就是使用两幅图,在屏幕上显示一幅图,然后在没显示在屏幕上的那份图上更新,更新了以后显示,而刚刚显示在屏幕的那幅成了离屏图像,这样不断交互;
怎么产生闪烁的呢,一般在更新的时候需要用背景色填充一下然后在画组件的样子,如果不用双缓冲,那填充背景色被你看在眼里产生闪烁;
awt是重量级的,swing是轻量级的,awt和swing的paint,repaint,update不一样;
repaint是将重绘的事件添加到事件队列里,这只是表达一个请求,事件队列有空了就重绘;
paint是真正的绘制(包括组件paintcomponent,边框paintborder,子组件paintchildren);
swing里update几乎不做什么事情;
swing里还有两个方法,revalidate和dolayout,后者是重新调整布局使之有效,前者即调用了后者,又对invalidate做出响应
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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,否则就放弃。
Update()方法用于更新组件,AWT调用该方法以响应对repaint()的调用,在调用update()或paint()之前,组件的外观将不会发生改变。它更新组件的步骤为:通过充填组件的背景色来清除该组件,然后,设置图形上下文(其原点为该组件的左顶点)的颜色为该组件的前景色,最后,调用paint方法完整地重绘该组件。该方法的原型为:
Public
void
update(Graphics
g)
Paint()方法用于绘制组件,当需要绘制组件的内容时调用该方法。该方法的原型为:
Public
void
paint(Graphics
g)
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,否则就放弃。
Update()方法用于更新组件,AWT调用该方法以响应对repaint()的调用,在调用update()或paint()之前,组件的外观将不会发生改变。它更新组件的步骤为:通过充填组件的背景色来清除该组件,然后,设置图形上下文(其原点为该组件的左顶点)的颜色为该组件的前景色,最后,调用paint方法完整地重绘该组件。该方法的原型为:
Public
void
update(Graphics
g)
Paint()方法用于绘制组件,当需要绘制组件的内容时调用该方法。该方法的原型为:
Public
void
paint(Graphics
g)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询