仅使用Swing实现活动渲染

3

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

编辑:我正在编写的程序不是全屏。

2个回答

2
Java支持在全屏独占模式API中进行主动渲染:
被动渲染与主动渲染
但是在AWT上也有方法来显式控制渲染(无需全屏):
  • 让您的渲染组件扩展java.awt.Canvas
  • 忽略EDT的重绘请求:setIgnoreRepaint(true);
  • 创建双缓冲区策略(页面翻转)
  • 在绘制后更新缓冲区:strategy.show()
  • 将更新后的图形带到屏幕上:Toolkit.getDefaultToolkit().sync();
这里有一篇关于该主题的好文章,包括一个示例:
Java游戏(实际上是最有效的重新绘制方式)

嗯...我已经编写了使用Canvas进行渲染的程序。然而,正如我在问题中指定的那样,我想要一个不使用AWT组件(如Canvas)的解决方案。这是因为根据论坛帖子,使用JPanel进行绘画比Canvas更快(但是,他们可能是错误的)。 - 1000000000

2

如果使用JFrame.getBufferStrategy()提供的BufferStrategy,只需使用Swing就可以执行主动渲染。从那时起,您可以像使用CanvasBufferStrategy一样操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接