我试图在JFrame swing Java中实现外观,其引发以下异常
"java.lang.ClassCastException:javax.swing.DebugGraphics cannot be cast to java.awt.Graphics2D "
它以某种形式工作。出现上述错误的原因是什么
最佳答案
即使几乎没有整个上下文,我也要指出一点。
从Java 1.4左右开始,所有Graphics
对象在paint
,paintComponent
,paintBackground
,paintChildren
和什么之间传递,实际上变成了Graphics2D
对象。这被广泛认为是事实(Graphics
== Graphics2D
)。
但是,您的某些组件似乎正在使用
setDebugGraphicsOptions(int)。这样做确实使以前的“事实”不再成立。只要您具有可靠的实现(例如instanceof Graphics2D
检查),您就会注意到,例如,使用调试图形时将不再应用RenderingHints
(仅在Graphics2D
上可用)。
否则,它将因您得到的确切异常而失败。
似乎所有代码都假定Graphics
是Graphics2D
。因此,您必须停止使用图形调试选项,或者手动修复所有覆盖的paintComponent
方法。