我试图在JFrame swing Java中实现外观,其引发以下异常

"java.lang.ClassCastException:javax.swing.DebugGraphics cannot be cast to java.awt.Graphics2D "


它以某种形式工作。出现上述错误的原因是什么

最佳答案

即使几乎没有整个上下文,我也要指出一点。

从Java 1.4左右开始,所有Graphics对象在paintpaintComponentpaintBackgroundpaintChildren和什么之间传递,实际上变成了Graphics2D对象。这被广泛认为是事实(Graphics == Graphics2D)。

但是,您的某些组件似乎正在使用
setDebugGraphicsOptions(int)。这样做确实使以前的“事实”不再成立。只要您具有可靠的实现(例如instanceof Graphics2D检查),您就会注意到,例如,使用调试图形时将不再应用RenderingHints(仅在Graphics2D上可用)。
否则,它将因您得到的确切异常而失败。

似乎所有代码都假定GraphicsGraphics2D。因此,您必须停止使用图形调试选项,或者手动修复所有覆盖的paintComponent方法。

10-07 19:35
查看更多