のJPanel
グリッドがJLabels
追加されています。MouseListener
を聞きたいのですMouseEvents
が、aのある場所をクリックしてJLabels
も邪魔にならず、火事が出ないようです。MouseEvent
JLabel
MouseEvents
コンポーネントの子の音を聞くための寛大な方法はありますか?
のJPanel
グリッドがJLabels
追加されています。MouseListener
を聞きたいのですMouseEvents
が、aのある場所をクリックしてJLabels
も邪魔にならず、火事が出ないようです。MouseEvent
JLabel
MouseEvents
コンポーネントの子の音を聞くための寛大な方法はありますか?
MouseEventsは、それらに対して有効になっている最上位(zオーダー)のコンポーネントにディスパッチされます。このコンポーネントには、mouseListenerが登録されているか、内部でeventMaskがそれらを処理するように設定されています。通常、JLabelは透過的ですが(したがって、イベントは下にあるパネルに到達する必要があります)、ツールチップを設定することでイベントが不透明になる場合があります。
jdk 7では、JLayerを使用して、子に配信されるすべての(マウス)イベントを取得できます。のドキュメントはJLayer
言う:
JLayerは、複合コンポーネントに対してカスタムペイントを実行するか、そのサブコンポーネントから入力イベントをキャッチするだけでよい場合に適したソリューションです。
jdk6の前身は、SwingLabsのJXLayerプロジェクトです。さらに別のオプションは、Robのブログで説明されているようにAWTEventListenerを使用することです(注意:セキュリティが制限されたコンテキストでは許可されない場合があります)