2011-12-17 4 views
2

タイトルに示されているように、私は複数の子JPanelコンポーネントを持つJPanelを持っており、すべての子コンポーネントにマウスイベントを伝播したいと思います。たとえば、子JPANelオブジェクトの1つに矩形を描画するマウス操作のドラッグイベントがあるとします。私は、他のJPanelの子供たちが同期して同じことを描くことを望みます。複数の子コンポーネントへのマウスイベントの同期ペイント動作の適用

最初に遭遇する問題は、通常、マウスイベントの「下に」存在する最上位のコンポーネントだけが、ほとんどのアプリケーションで意味をなさない特定のマウスイベントの通知を受け取ることです。私は代わりに、通常使用されるMouseListenerルートを放棄し、さまざまなマウスイベントを有効にするためにenableEvents()を使用し、processMouseEvent()およびprocessMouseMotionMotionEvent()をオーバーライドして、各関数がマウスイベントを親座標からの座標)をそれぞれの子JPanelに渡して必要な描画を行います。しかし、私が選んだルートが最善であるかどうかは分かりません。

ディスパッチイベント(AWTEvent e)メソッドをオーバーライドしてイベントを各チャイルドパネルにディスパッチする方法がありましたが、残念ながらdispatchEvent(AWTEvent e)はオーバーライドできません。

一般的なご援助をいただければ幸いです。

答えて

1

入力コードと塗りつぶしコードを区切ります。

パネルに、何を塗装する必要があるかを示すモデルを共有させますか?あなたのMouseListener(または他の入力に基づいて)で、モデルにペイントする必要があるものを追加します。パネルはモデルを再描画するようパネルに通知できます。

関連する問題