1

JFrame swing Java でルック アンド フィールを実装しようとしていますが、次の例外がスローされます。

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

そのいくつかのフォームに取り組んでいます。上記のエラーの理由は何ですか

4

1 に答える 1

2

コンテキスト全体のほとんどが欠落していますが、指摘したいことがあります。

Java 1.4 かそこら以来、 、 、、およびその他の間でGraphics渡されるすべてのオブジェクトは、実際にはオブジェクトになりました。これは事実 ( == )として広く考えられています。paintpaintComponentpaintBackgroundpaintChildrenGraphics2DGraphicsGraphics2D

ただし、一部のコンポーネントは setDebugGraphicsOptions(int)を使用しているようです。これにより、以前の「事実」はもはや真実ではなくなります。堅牢な実装 (instanceof Graphics2Dチェックなど) がある限り、たとえばRenderingHints(でのみ使用可能Graphics2D) がデバッグ グラフィックスの使用時に適用されなくなったことに気付くでしょう。そうしないと、取得している正確な例外で失敗します。

すべてのコードGraphicsGraphics2D. したがって、グラフィック デバッグ オプションの使用を停止するか、オーバーライドされたすべてのpaintComponentメソッドを手動で修正する必要があります。

于 2013-09-10T06:21:38.150 に答える