仅使用Swing进行主动渲染

时间:2015-03-11 12:45:06

标签: java swing

是否可以仅使用Swing组件(没有Canvas或任何其他AWT组件)使用双缓冲执行活动渲染?这意味着不应该依赖EDT来处理任何渲染方面。

编辑:我写的提示这个问题的程序不是全屏的。

2 个答案:

答案 0 :(得分:1)

Java支持Full-Screen Exclusive Mode API中的活动呈现:
Passive vs. Active Rendering

但是在AWT上也有办法明确控制渲染(无需全屏显示):

  • 让您的渲染组件扩展java.awt.Canvas
  • 忽略来自美国东部时间的重绘请求:setIgnoreRepaint(true);
  • 为双缓冲(页面翻转)创建缓冲策略
  • 绘画后更新缓冲区:strategy.show()
  • 将更新的图片带到屏幕:Toolkit.getDefaultToolkit().sync();

这是一篇关于该主题的好文章,包括一个例子:
Java Game (Actually the most efficient way to repaint)

答案 1 :(得分:1)

如果您使用BufferStrategy提供的JFrame.getBufferStrategy(),则只能使用Swing执行活动呈现。从那时起,您可以像使用BufferStrategy中的Canvas一样行事。