我试图在JFrame swing java中实现外观,它抛出异常
"java.lang.ClassCastException:javax.swing.DebugGraphics cannot be cast to java.awt.Graphics2D "
它在某些形式上工作。上述错误的原因是什么
答案 0 :(得分:2)
尽管缺少整个背景,但我有必要指出。
从Java 1.4开始,所有Graphics
个对象都在paint
,paintComponent
,paintBackground
,paintChildren
之间传递,事实上,{ {1}}个对象。这被广泛认为是事实(Graphics2D
== Graphics
)。
但是,您的某些组件似乎正在使用
setDebugGraphicsOptions(int)。这样做会使前者“事实”不再成立。只要您有一个强大的实现(例如Graphics2D
检查),您就会注意到,例如,使用调试图形时,不再应用instanceof Graphics2D
(仅在RenderingHints
上可用) 。
否则,它会因你得到的确切异常而失败。
您的所有代码都会假定Graphics2D
为Graphics
。因此,您必须停止使用图形调试选项,或手动修复所有被覆盖的Graphics2D
方法。