0

私は普段は Python でプログラミングしていますが、数時間前に何人かの友人から、Java の宿題を手伝ってもらえないかと尋ねられました。それで、私は数時間前から Java を学んでいます。

いずれにせよ、高速で移動するときに空力が特定のオブジェクトにどのように影響するかを視覚的に示すプログラムが必要です。複雑なことは何もありませんが、おそらくボールかそこらだけなので、単純な円で十分です.

ActionListeners などのコツをつかんだところですが、マウス ボタンがクリックされたときに Canvas オブジェクトに表示されるオブジェクトを変更するにはどうすればよいでしょうか?

4

2 に答える 2

2

キャンバスにMouseListenerを追加しmouseClicked()、リスナーのメソッドで、キャンバスによってペイントされたオブジェクトの状態を変更し、変更repaint()された状態に基づいてキャンバスがそれ自体を再ペイントするように、canvasメソッドを呼び出します。

于 2012-12-15T09:09:58.017 に答える
1

これはかなり時代遅れの AWT のものなので、 a を拡張して a の代わりにJPanel使用することをお勧めします。基本的にあなたがする必要があるのは、最終的に使用するパレット(または)に を追加し、リスナーのオーバーライドで、好きなものをペイントすることです。また、変更のたびに呼び出します(これを定期的に行うタイマーを作成できます-この質問の最初の回答を参照してください)。paintComponent()CanvasMouseListenerCanvasJPanelmouseClicked()repaint()

Ellipse2Dボールをペイントすることになると、プレーンdrawOval()(おそらく最初は簡単な方法のように思えます) ではなく、Java2D API ( を参照) を使用することをお勧めします。その理由はEllipse2D、一連の非常に便利なメソッド (たとえば、「 」を参照) を使用できるようにすることでsetFrame()あり、状態を維持する「実際のオブジェクト」です。コンポジションを使用して、目的の動作を備えた形状クラスを簡単に作成できますEllipse2D。形状のグラフィック表現として を使用します。drawOval()ただし、乱雑なプロシージャル ヌードル ボウルを作成せずに使用するのははるかに困難です。

于 2012-12-15T09:20:36.437 に答える