javajframe&;JPanel与Repaint()的差异

javajframe&;JPanel与Repaint()的差异,java,swing,awt,paint,Java,Swing,Awt,Paint,我一直在玩一些简单的Graphics2D绘画,这里的社区提供了一些非常好的帮助 通过将代码从主JFrame类移到JPanel中,我成功地解决了我的“弹跳球”中的闪烁问题,然后将其添加到JFrame类中,有人能告诉我为什么这会产生如此大的差异吗?当您绘制JComponent的paintComponent方法时(例如JPanel的),使用Swing,默认情况下绘制时使用双缓冲。直接在JFrame的绘制方法中绘制将只允许AWT类型的绘制,因为JFrame直接继承自Frame(一个重量级容器),而且AW

我一直在玩一些简单的
Graphics2D
绘画,这里的社区提供了一些非常好的帮助


通过将代码从主
JFrame
类移到
JPanel
中,我成功地解决了我的“弹跳球”中的闪烁问题,然后将其添加到
JFrame
类中,有人能告诉我为什么这会产生如此大的差异吗?

当您绘制JComponent的paintComponent方法时(例如JPanel的),使用Swing,默认情况下绘制时使用双缓冲。直接在JFrame的绘制方法中绘制将只允许AWT类型的绘制,因为JFrame直接继承自Frame(一个重量级容器),而且AWT图形默认情况下不使用双缓冲,这将导致动画不稳定。

非常感谢你的气垫船!