繁体   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