4

JPanelグリッドがJLabels追加されています。MouseListenerを聞きたいのですMouseEventsが、aのある場所をクリックしてJLabelsも邪魔にならず、火事が出ないようです。MouseEventJLabel

MouseEventsコンポーネントの子の音を聞くための寛大な方法はありますか?

4

1 に答える 1

8

MouseEventsは、それらに対して有効になっている最上位(zオーダー)のコンポーネントにディスパッチされます。このコンポーネントには、mouseListenerが登録されているか、内部でeventMaskがそれらを処理するように設定されています。通常、JLabelは透過的ですが(したがって、イベントは下にあるパネルに到達する必要があります)、ツールチップを設定することでイベントが不透明になる場合があります。

jdk 7では、JLayerを使用して、子に配信されるすべての(マウス)イベントを取得できます。のドキュメントはJLayer言う:

JLayerは、複合コンポーネントに対してカスタムペイントを実行するか、そのサブコンポーネントから入力イベントをキャッチするだけでよい場合に適したソリューションです。

jdk6の前身は、SwingLabsのJXLayerプロジェクトです。さらに別のオプションは、Robのブログで説明されているようにAWTEventListenerを使用することです(注意:セキュリティが制限されたコンテキストでは許可されない場合があります)

于 2011-11-22T08:05:52.573 に答える