JFrame swing Java でルック アンド フィールを実装しようとしていますが、次の例外がスローされます。
"java.lang.ClassCastException:javax.swing.DebugGraphics cannot be cast to java.awt.Graphics2D "
そのいくつかのフォームに取り組んでいます。上記のエラーの理由は何ですか
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
メソッドを手動で修正する必要があります。