java - 仅使用 Swing 进行主动渲染

标签 java swing

是否可以仅使用 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/

相关文章:

java - JPanels 不出现在 JFame 中

java - Swing:在 JComboBox 中检测 Enter?

Java SwingX JXCollapsiblePanel 的设置和使用

java - 从 com.google.android.gms.vision.CameraSource 访问相机并增加/减少预览亮度

java - 在类之间发送 token

java - 聚合根中的重复值应该在领域层还是应用层进行检查?

java - 图形和负纵坐标

java - 按长度和字母顺序按行打印单词

java - JPanel 直到代码之后才显示

Java 在不可编辑的 JTextArea 中插入退格键