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