为了账号安全,请及时绑定邮箱和手机立即绑定

求助下面程序,paint,repaint以及update的详细工作原理,内部怎么运作的?

求助下面程序,paint,repaint以及update的详细工作原理,内部怎么运作的?

阿晨1998 2022-05-25 19:15:50
public void update(Graphics g) {//消除闪烁的作用if(offScreenImage == null) {offScreenImage = this.createImage(525,525);}Graphics gOff = offScreenImage.getGraphics();paint(gOff);g.drawImage(offScreenImage, 0, 0, null);}解释下为什么上面程序能消除闪烁。闪烁是怎么产生的。什么时候图像被覆盖,什么时候被刷新。总之想知道内部工作原理
查看完整描述

1 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

swing是通过双缓冲取消闪烁的, 双缓冲就是使用两幅图,在屏幕上显示一幅图,然后在没显示在屏幕上的那份图上更新,更新了以后显示,而刚刚显示在屏幕的那幅成了离屏图像,这样不断交互;
怎么产生闪烁的呢,一般在更新的时候需要用背景色填充一下然后在画组件的样子,如果不用双缓冲,那填充背景色被你看在眼里产生闪烁;
awt是重量级的,swing是轻量级的,awt和swing的paint,repaint,update不一样;
repaint是将重绘的事件添加到事件队列里,这只是表达一个请求,事件队列有空了就重绘;
paint是真正的绘制(包括组件paintComponent,边框paintBorder,子组件paintChildren);
swing里update几乎不做什么事情;
swing里还有两个方法,revalidate和dolayout,后者是重新调整布局使之有效,前者即调用了后者,又对invalidate做出响应


查看完整回答
反对 回复 2022-05-30
  • 1 回答
  • 0 关注
  • 145 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号