Java 仅使用Swing的活动渲染

Java 仅使用Swing的活动渲染,java,swing,Java,Swing,是否可以仅使用Swing组件(无画布或任何其他AWT组件)执行双缓冲的活动渲染?这意味着不应依赖EDT来处理渲染的任何方面 编辑:我正在编写的提示此问题的程序不是全屏的。Java支持在: 但在AWT上,也有一些方法可以显式控制渲染(无需全屏): 让渲染组件扩展java.awt.Canvas 忽略来自EDT的重新绘制请求:setIgnoreRepaint(true) 为双缓冲(翻页)创建缓冲策略 绘制后更新缓冲区:strategy.show() 将更新的图形显示在屏幕上:Toolkit.get

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


编辑:我正在编写的提示此问题的程序不是全屏的。

Java支持在:

但在AWT上,也有一些方法可以显式控制渲染(无需全屏):

  • 让渲染组件扩展java.awt.Canvas
  • 忽略来自EDT的重新绘制请求:
    setIgnoreRepaint(true)
  • 为双缓冲(翻页)创建缓冲策略
  • 绘制后更新缓冲区:
    strategy.show()
  • 将更新的图形显示在屏幕上:
    Toolkit.getDefaultToolkit().sync()
这里有一篇关于这个主题的好文章,包括一个例子:

如果使用
JFrame.getBufferStrategy()
提供的
BufferStrategy
,则可以仅使用Swing执行活动渲染。从这一点上,您可以表现得好像您在使用
画布上的
缓冲策略
。。。我已经编写了使用画布进行渲染的程序。然而,正如我在问题中指定的,我想要一个不使用AWT组件(如Canvas)的解决方案。这是因为根据论坛线程,使用JPanel进行绘画比使用Canvas更快(不过,他们可能会弄错)。