gpt4 book ai didi

java - 如何监听子组件?

转载 作者:搜寻专家 更新时间:2023-11-01 01:46:33 24 4
gpt4 key购买 nike

我有一个 JPanel 添加了一个 JLabels 网格。我想要一个 MouseListener 来监听 MouseEvents,但是 JLabels 似乎挡住了路而且没有 MouseEvent 单击 JLabel 所在的位置时触发。

是否有可靠的方法来监听组件子级的 MouseEvents

最佳答案

MouseEvents 被分派(dispatch)到为它们启用的最顶层(按 z 顺序)组件,该组件上注册了 mouseListener 或在内部设置了 eventMask 来处理它们。虽然通常 JLabel 是透明的(因此事件应该到达底层面板),但它们可能会通过 f.i. 变得事件不透明。设置工具提示。

在jdk 7中,你可以use a JLayer获取传递给其子项的所有(鼠标)事件。 JLayer 的文档说:

JLayer is a good solution if you only need to do custom painting over compound component or catch input events from its subcomponents.

jdk6 的前身是 JXLayer project在 Swing 实验室。另一种选择是使用 AWTEventListener,如 Rob's blog 中所述。 (注意:在安全受限的上下文中可能不允许)

关于java - 如何监听子组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8222583/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com