Java - 获取图形

Java - get Graphics

我正在制作 java 摇摆游戏。我听说 swing 组件不使用主动渲染(你只能覆盖绘制方法),因此,我一直在使用 BufferStrategy with Canvas。现在我发现了 JComponent 和 JPanel 的 getGraphics() 方法。如果我们可以在 swing 组件中进行主动渲染,为什么游戏教程仍然覆盖 paint()paintComponent()

永远不要使用 getGraphics,它可以 return null,只不过是最后一个绘画周期的快照。

您在其上绘制的任何内容都将在下一个绘制周期中移除。在 Swing 中,您无法控制绘制过程,并且可以出于多种原因启动绘制周期,其中许多原因您无法控制或不会收到通知(除了调用绘制时)

基本答案是,如果您想控制绘制过程,则必须使用 BufferStrategy 或实现您自己的屏幕外绘制例程。没有任何方法可以在 Swing 中实现真正的主动绘画过程 API,你可以在一定程度上伪造它,但是 Swing 仍然能够在它认为合适的时候执行它自己的绘画周期。

查看 Painting in AWT and Swing and Performing Custom Painting 了解有关 Swing 绘画工作原理的更多详细信息