2

私はしばらくJava Swingに取り組んできました。JDesktopPane に何かをペイント (円、四角形などの基本的な形状を描画) し、jDesktopPane を含むフレーム ウィンドウのサイズを変更するか、このフレームに他のウィンドウをドラッグすると、描画された形状が消えます。画像を保存するために BufferedImage クラスのオブジェクトを使用します。では、図形が消えないようにする方法や、消えたときに再描画する方法はありますか?

4

2 に答える 2

3

paintComponent()ペイントしたものを保存し、メソッドで毎回再ペイントしていることを確認する必要があります。このメソッドは、再描画が必要になるたびに自動的に呼び出されます (たとえば、サイズ変更のため)。

于 2011-05-19T23:07:06.623 に答える
2

必要なコードを投稿しないことにしたので、推測しかできませんが、私の提案は次のとおりです。

  • コンポーネントで getGraphics を呼び出して Graphics オブジェクトを取得しないでください。その代わり、
  • JComponent またはその子の 1 つ (JPanel など) をサブクラス化するクラスで描画を行うようにしてください。
  • 同じメソッドで super.paintComponent() を呼び出した直後に、JComponent の paintComponent メソッドで BufferedImage を描画します。JVM によって提供され、メソッドのパラメーターに渡される Graphics オブジェクトを使用します。
  • paintComponent メソッドのシグネチャが正しいことを確認するには、その直前に @Override アノテーションを配置します。それ以外の場合は、JVM は期待どおりに呼び出さない可能性があります。
  • ただし、ここで質問する場合は、推測する必要がないように十分な情報を提供してください。あなたの問題はグラフィック関連なので、グラフィック関連のコードを投稿するのは理にかなっていますよね?
于 2011-05-19T23:07:46.147 に答える