2

ダイアグラムエディタに似たものを作りたいと思っています。これは、ユーザーがキャンバス上で一連の図形を作成、表示、編集できるようにするアプリケーションです。私のGUIには、基本的に3つの部分があります。標準のJMenuBar、形状に関する情報を表示するための右側の1つのJPanel、および形状を視覚化するために使用する必要があるその隣のJPanelです。

それとは別に、私は形を定義するパッケージを持っています。簡単にするために、次の情報を含む正方形だけがあるとしましょう:キャンバス上の座標、サイズ、ユーザー定義の名前と説明、色。プロジェクトのメインクラス(JFrameの拡張)には、Squaresのリストが含まれています。

これで、drawrectなどを使用してJPanelで図形を描画するだけで図形を視覚化できましたが、インタラクティブなエディターを作成したいと思います。ユーザーが視覚化した図形を右クリックすると、コンテキストメニューがポップアップ表示され、移動できます。それ、そのプロパティを変更するか、形状を完全に削除します。JPanelの空の場所をクリックすると、ユーザーは(ここでもメニューを介して)新しい形状を作成できます。

キャンバスの各ピクセルを特定の形状にマッピングするマトリックスを手動で保持し、右クリックでチェックするのではなく、これを行う自動化された方法はありますか?たとえば、これをJPanel内に描画し、クリックして何かを実行できます...関連する質問です。JPanelで図形を編集するときに、メインアプリケーションクラスのSquare/Circleリストにアクセスするにはどうすればよいですか。本当に変えられるように?これは簡単なことだと思いますが、今のところどうすればいいのかわかりません。

私を正しい方向に向けてください、何でもありがたいです、ヒント、例、関連するチュートリアルへのリンク...

4

2 に答える 2

3

@eugenerが示唆しているように、Shapeインターフェースを実装するクラスにcontains()は、これに役立つメソッドがあります。GraphPanelあなたが言及する機能のいくつかを説明する例です。

于 2012-04-29T02:07:51.580 に答える
2

これを実現する最も一般的な方法は、ポイントがシェイプの内側にあるかどうかをシェイプが判別できるようにすることです。うまくいけば、コードはオブジェクト指向であり、シェイプの各タイプはクラスです。

あなたがしなければならないのはboolean isInside( point: Point)、各形状などのメソッドを定義することです。これらを取得したら、図形をZオーダーの逆方向(上から下)に歩き、マウスのクリックポイントがどこに役立つかを確認するだけです。それがどの形にも役立たない場合-あなたはキャンバスをクリックしました。この情報を入手したら、適切なメニューを表示できます。

お役に立てれば

于 2012-04-28T22:03:48.863 に答える