2012-04-28 11 views
2

私はダイアグラムエディタに似たものを作っています。これは、キャンバス上に多数の図形を作成、表示、編集できるアプリケーションです。私のGUIには基本的に3つの部分があります - 標準のJMenuBar、図形の情報を表示するための右側のJPanel、図形を視覚化するために使用するJPanelの3つです。Java Swing/AWT - コンテキストメニューを使用したオブジェクトのペイント

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

ここでは、drawanとそれ以外のものを使用してJPanelで描くだけでシェイプを視覚化できますが、インタラクティブなエディタを作成したいと思います。ユーザーが視覚的なシェイプを右クリックするとコンテキストメニューがポップアップします彼はそれを移動させ、その特性を変更したり、形状を完全に取り除いたりすることができる。 JPanelで空の場所をクリックすると、ユーザーは(再びメニューを介して)新しい図形を作成することができます。

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

は正しい方向に私を指すしてください、何が理解されるであろう、ヒントは、例、関連するチュートリアルへのリンク...これを実現するための最も一般的な方法

答えて

2

はポイントが内側にある場合は形状が決定できるようにすることです形状。うまくいけば、あなたのコードはオブジェクト指向であり、あなたのシェイプの各タイプはクラスです。

あなたがしなければならないのは、それぞれの図形にboolean isInside(point: Point)のようなメソッドを定義することだけです。いったんそれらを持っていれば、逆のzオーダー(上から下へ)でシェイプを歩き、マウスのクリックポイントがどこにあるのかを確認するだけです。それがどんな形にも貸していなければ、キャンバスをクリックしました。この情報があれば、適切なメニューを表示することができます。 @eugenerによって示唆されるように

ホープこれは

3

を助け、Shapeインタフェースを実装するクラスは、この場合に便利です方法を持っています。 GraphPanelは、あなたが言及している機能のいくつかを示す例です。

関連する問題