Java中用双缓冲技术消除闪烁
2015-07-22 19:27
429 查看
[code]在Java编写具有连贯变化的窗口程序时,通常的办法是在子类中覆盖父类的paint(Graphics)方法,在方法中使用GUI函数实现窗口重绘的过程。连贯变换的窗口会不断地调用update(Graphics)函数,该函数自动的调用paint(Graphics)函数。这样就会出现闪烁的情况。
为了解决这一问题,可以应用双缓冲技术。可以通过截取上述过程,覆盖update(Graphics)函数,在内存中创建一个与窗口大小相同的图形,并获得该图形的图形上下文(Graphics),再将图片的图形上下文作为参数调用paint(Graphics)函数(paint(Graphics)中的GUI函数会在图片上画图),再在update(Graphics)函数调用drawImage函数将创建的图形直接画在窗口上。
[code] /** * 覆盖update方法,截取默认的调用过程 */ public void update(Graphics g){ ImageBuffer = createImage(this.getWidth(), this.getHeight());//创建图形缓冲区 GraImage = ImageBuffer.getGraphics();//获取图形缓冲区的图形上下文 paint(GraImage);//用paint方法中编写的绘图过程对图形缓冲区绘图 GraImage.dispose();//释放图形上下文资源 g.drawImage(ImageBuffer, 0, 0, this);//将图形缓冲区绘制到屏幕上 }
相关文章推荐
- eclipse / MyEclipse JSP默认打开方式更改
- java之反射
- Java获取当前时间
- Java培训-IO流补充
- Java集合
- JAVA之堆内存和栈内存的区别
- 浅谈Java中的System.gc()的工作原理
- java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener问题解决
- 自定义struts(二)--FakeStruts实现@Transaction 注解事务控制
- JAVA学习第七天
- Java参数传递问题
- java进阶
- spring中关于定时器的配置
- 在Struts2使用集合对象保存表单提交参数
- java.lang.IllegalStateException: WRITER
- java可变参数使用总结
- Java 敏感字验证
- java注解入门(含源码下载)
- Struts2的声明式异常处理
- 基于注解的 Spring MVC 简单入门