用户操作
[留言]  [发消息]  [加为好友] 
订阅我的博客
XML聚合    FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
dracularking的公告
坚持竞技就是人生态度,破除一切艰难险阻! <script src="http://www.clocklink.com/embed.js"></script><script type="text/javascript" language="JavaScript">obj=new Object;obj.clockfile="0032-white.swf";obj.TimeZone="China_Shanghai";obj.width=130;obj.height=130;obj.wmode="transparent";showClock(obj);</script>
文章分类
存档

转载  关于awt/swing组件中paint, update, paintComponent, repaint的经验 收藏

1、Applet/JApplet:
 repaint+paint       -- dragged, paint
 repaint+update+paint  -- dragged, update

  Applet:  repaint+paint -- 自动重画
    repaint+update --  不自动重画
  JApplet:都不自动重画

  结论:awt组件中的paint方法自动重画背景,实际上可以说是update方法自动重画背景,由于重写了update方法,所以不自动重画了!!

  双缓冲:update中画背景缓冲,paint中将背景缓冲绘制到前台图形中

2 、Frame/JFrame:
 repaint+paint       -- dragged, paint
 repaint+update+paint  -- dragged, update

  Frame:  repaint+paint -- 自动重画
   repaint+update --  不自动重画
  JFrame: 都不自动重画

  问题:双缓冲时,因为背景Frame/JFrame是不可显示的(isDisplayable()),所以无法执行createImage()方法,难道基于框架的绘图不支持双缓冲?

3、 Panel:
 repaint+paint       -- dragged, paint
 repaint+update+paint  -- dragged, update
 repaint不执行paintComponent

 JPanel:
 repaint+update+paint  -- dragged, update
 repaint+paint+paintComponent  -- dragged, paint
 repaint+paintComponent  -- dragged, paintComponent
 repaint执行paintComponent, 不执行paintComponents, 使用super.paintComponent(g)可达到填充背景的目的。

 

发表于 @ 2008年04月19日 12:14:00 | 评论( loading... ) | 编辑| 举报| 收藏

旧一篇:基础概念详细解答——究竟什么才是SOA? | 新一篇:复杂的GridBagLayout

  • 发表评论
  • 评论内容:
  •  
Copyright © dracularking
Powered by CSDN Blog