[英]How to listen to child components?
我有一個添加了JLabels
網格的JPanel
。 我想要一個MouseListener
來監聽MouseEvents
,但是JLabels
似乎MouseEvents
,當點擊JLabel
所在的位置時沒有MouseEvent
觸發。
是否有一種方便的方式來監聽組件子項的MouseEvents
?
MouseEvents被分派到為它們啟用的最頂層(按z順序)組件,其上注冊了mouseListener或在內部設置了eventMask來處理它們。 雖然通常JLabel是透明的(因此事件應該到達底層面板),但是通過設置工具提示,它們可能會使事件不透明。
在jdk 7中,您可以使用JLayer來獲取傳遞給其子級的所有(鼠標)事件。 JLayer
的文檔說:
如果您只需要對復合組件進行自定義繪制或從子組件捕獲輸入事件,則JLayer是一個很好的解決方案。
它的前身是jdk6,是SwingLabs中的JXLayer項目 。 另一種選擇是使用AWTEventListener,如Rob的博客中所述 (注意:在安全限制的上下文中可能不允許)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.