注册
 找回密码
 注册
江西广告网
查看: 362|回复: 0
打印 上一主题 下一主题

java中的双缓冲技术

[复制链接]

该用户从未签到

1
跳转到指定楼层
发表于 2009-2-17 10:58:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
毕业设计有个远程协助功能,得到对方的屏幕后,老是会闪,很是不爽,今天用java的双缓冲技术解决了。代码如下,本类重写了Swing中的JLabel,当Label重绘时,会默认的调用它的update方法,主要用于清除界面,然后update方法会调用paint方法,再把界面画上去,所以我现在update方法中创建了一个Image和Graphics对象Image off_screen_buf和off_screen_gc同时设置其大小和MyLabel对象的大小一样,用于把要画的东东先绘制到后台内存中,然后调用paint方法把要画的图像画在上面。最后再把内存中的图像画在前台上用off_screen_buf作为参数。再调用repaint方法,repaint方法回默认的调用update方法,这样图像就能够不停的显示了。 public class MyLabel extends JLabel { //双缓冲技术 private Image off_screen_buf; private Graphics off_screen_gc; public void paint(Graphics g) { if(Myjxta.image!=null) { this.setPreferredSize(new Dimension(Myjxta.image.getWidth(),Myjxta.image.getHeight())); g.drawImage(Myjxta.image, 0, 0, this); } try { Thread.sleep(200); } catch(Exception e) { e.printStackTrace(); } } public void update(Graphics g) { if (Myjxta.image != null) { [1] [2] off_screen_buf =this.createImage(this.getWidth(),this.getHeight()); off_screen_gc = off_screen_buf.getGraphics(); paint(off_screen_gc); off_screen_gc.dispose(); g.drawImage(off_screen_buf,0,0,null); this.repaint() ; } } } 上一页 [1] [2]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表