是否可以仅使用 Swing 组件(无 Canvas 或任何其他 AWT 组件)通过双缓冲执行主动渲染?这意味着不应依赖 EDT 来处理渲染的任何方面。
编辑:我正在编写的引发此问题的程序不是全屏的。
最佳答案
Java 支持 Full-Screen Exclusive Mode API 中的主动渲染:
Passive vs. Active Rendering
而且在 AWT 上也有一些方法可以显式控制渲染(无需全屏):
- 让您的渲染组件扩展
java.awt.Canvas
- 忽略来自 EDT 的重绘请求:
setIgnoreRepaint(true);
- 创建双缓冲(翻页)的缓冲策略
- 绘制后更新缓冲区:
strategy.show()
- 将更新后的图形显示到屏幕上:
Toolkit.getDefaultToolkit().sync();
这是一篇关于该主题的好文章,其中包括一个示例:
Java Game (Actually the most efficient way to repaint)
关于java - 仅使用 Swing 进行主动渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28986963/