Java 仅使用Swing的活动渲染
是否可以仅使用Swing组件(无画布或任何其他AWT组件)执行双缓冲的活动渲染?这意味着不应依赖EDT来处理渲染的任何方面Java 仅使用Swing的活动渲染,java,swing,Java,Swing,是否可以仅使用Swing组件(无画布或任何其他AWT组件)执行双缓冲的活动渲染?这意味着不应依赖EDT来处理渲染的任何方面 编辑:我正在编写的提示此问题的程序不是全屏的。Java支持在: 但在AWT上,也有一些方法可以显式控制渲染(无需全屏): 让渲染组件扩展java.awt.Canvas 忽略来自EDT的重新绘制请求:setIgnoreRepaint(true) 为双缓冲(翻页)创建缓冲策略 绘制后更新缓冲区:strategy.show() 将更新的图形显示在屏幕上:Toolkit.get
编辑:我正在编写的提示此问题的程序不是全屏的。Java支持在:
但在AWT上,也有一些方法可以显式控制渲染(无需全屏):
- 让渲染组件扩展java.awt.Canvas
- 忽略来自EDT的重新绘制请求:
setIgnoreRepaint(true)代码>
- 为双缓冲(翻页)创建缓冲策略
- 绘制后更新缓冲区:
strategy.show()
- 将更新的图形显示在屏幕上:
Toolkit.getDefaultToolkit().sync()代码>
如果使用
JFrame.getBufferStrategy()
提供的BufferStrategy
,则可以仅使用Swing执行活动渲染。从这一点上,您可以表现得好像您在使用画布上的缓冲策略。。。我已经编写了使用画布进行渲染的程序。然而,正如我在问题中指定的,我想要一个不使用AWT组件(如Canvas)的解决方案。这是因为根据论坛线程,使用JPanel进行绘画比使用Canvas更快(不过,他们可能会弄错)。