2017-04-12 6 views
-1

JPanelの円をpaintComponentで描画しようとしましたが、元の塗料をすべて削除するたびにrepaint()と呼びます。しかし、superを削除すると、円の動きの軌跡が表示されます。だから、私はその軌跡を表示せずに移動後にサークルを保持するためにどうすればよいですか?トレースを表示せずにグラフィックスを移動するにはどうすればいいですか?

+0

これを数回読んだ後、私はあなたが作りたいと思っている効果についてはまだ分かりません。以前のサークルを保持したい場合は、すべてを画像に描画して画像を表示します。もしそうでなければ、オーバーライドされたメソッドの第1行として 'super.paint(g)'を使います。 –

答えて

1

スイングでのペインティングは破壊的です。その仕組みです。

ペイントサイクルが発生すると、最初からコンポーネントの状態を再描画することが予想されます。これは、あなたがペイントメソッドは、それの全体

状態を再描画するために使用できるモデルのいくつかの種類を維持する必要があることを示唆している

私は絵が

をどのように機能するかについての詳細は、 Painting in AWT and Swingを見た推薦します
1

まず、Custom PaintingのSwingチュートリアルのセクションを読んでください。マウスがクリックされた場所に四角形を描画する方法を示します。

あなたのロジックは、マウスを使って円の新しい位置を決定する代わりに、プログラムされたロジックを使用して円のx/y位置を変更するという点を除いて同様です。

Swing Timerを使用して、このアニメーションをスケジュールすることができます。このチュートリアルには、How to Use Swing Timersのセクションもあります。これには、始めるための実例が含まれています。

関連する問題