簡體   English   中英

如何聽兒童組件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM