关于java中paint,repaint以及update的问题

求paint,repaint以及update的详细工作原理,内部怎么运作的,下面程序publicvoidupdate(Graphicsg){//消除闪烁的作用if(off... 求paint,repaint以及update的详细工作原理,内部怎么运作的,下面程序

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);
}
解释下为什么上面程序能消除闪烁。
闪烁是怎么产生的。
什么时候图像被覆盖,什么时候被刷新。总之想知道内部工作原理
展开
 我来答
kslinabc
推荐于2018-03-21 · TA获得超过261个赞
知道小有建树答主
回答量:162
采纳率:0%
帮助的人:190万
展开全部
swing是通过双缓冲取消闪烁的, 双缓冲就是使用两幅图,在屏幕上显示一幅图,然后在没显示在屏幕上的那份图上更新,更新了以后显示,而刚刚显示在屏幕的那幅成了离屏图像,这样不断交互;
怎么产生闪烁的呢,一般在更新的时候需要用背景色填充一下然后在画组件的样子,如果不用双缓冲,那填充背景色被你看在眼里产生闪烁;
awt是重量级的,swing是轻量级的,awt和swing的paint,repaint,update不一样;
repaint是将重绘的事件添加到事件队列里,这只是表达一个请求,事件队列有空了就重绘;
paint是真正的绘制(包括组件paintComponent,边框paintBorder,子组件paintChildren);
swing里update几乎不做什么事情;
swing里还有两个方法,revalidate和dolayout,后者是重新调整布局使之有效,前者即调用了后者,又对invalidate做出响应
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式