これは学業であるため、私は完全な解決策を望んでいない。 )。ArrayListで最新の形状を取得して他の図形の上にペイントする - Java
マウス入力を処理するクラスがあります。そのクラスから、ユーザーがシェイプ上でマウスボタンを押したままで、そのシェイプをアクティブシェイプに設定するかどうかを確認します。ユーザーがシェイプをドラッグしている間に、シェイプはそれに沿って移動し、それに応じて位置を変更します。マウスが離されると、selectedShapeはnullに設定され、パネルは再描画されます。
私はselectedShapeが他のすべての図形の上にあるようにしたいので、選択した図形が他の図形の上にドラッグされていると、それは正面になります。
repaint()メソッドは、ArrayListに表示されるときにrepaint()メソッドを再描画するだけで、上にそのシェイプをペイントするために別のメソッドを使用する必要があります(視覚的に言えば)。
ここで、この機能を追加する方法はありますか。 MouseHandlerクラスでは? - 親クラス 三角形、正方形、円形 - チャイルド - マウスの動きをと、各形状を呼び出す - MouseHandler 独自ドロー(g)の方法およびsetPositionを有する MyShape:
クラスは関連していることが含ま新しい位置を設定する。 MyShapeHandler - リストから図形を追加/削除する パネル - 図形のインスタンスを作成し、MyShapeHandlerヘルプメソッドaddShapeを使用してArrayListに追加します。 drawComponent(g)を使用して各形状をArrayListに描画します。 ウィンドウ - パネルを追加するJFrame
シェイプオブジェクトの順序が特に必要ない場合は、Listインタフェースで提供される 'set(index、object)'を使用して、最後に選択したオブジェクトと最後のオブジェクトをスワップするだけです。 MouseReleasedメソッドでMouseHandlerでそれを行う必要があります。 – skubski
図形がどのように重なったり、他の図形で完全に囲まれているかを考えれば、私はすべての図形のリストを(JListのように)保持しています。このリストは、「現在の移動する形状」の選択を可能にする。次に、ペイントするときに最初にシェイプのリスト全体をペイントし、最後に選択されたシェイプをペイントして(2回目)ペイントすることで簡単にエミュレートできます。 –