【问题标题】:Add 'inactive' mouse listener添加“非活动”鼠标侦听器
【发布时间】:2012-01-08 14:18:49
【问题描述】:

科贝尔先生已经死了,非常感谢

我在JPanel 上有一个鼠标监听器,它工作正常。我正在尝试向JLabel 添加一些翻转支持,但是当我将鼠标侦听器添加到 JLabel 时,JPanel 的鼠标侦听器在标签的鼠标侦听器收到事件时停止接收事件。

我只想在JLabel中添加一个鼠标监听器,而不阻塞它下面JPanel的鼠标监听器。谢谢。

奖金问题!我想做getComponentAt(Point p) 并将组件放在底部,而不是最上面,有什么建议吗?我有一个解决方法,所以这部分并不重要,但我不喜欢解决方法。再次感谢。

【问题讨论】:

  • 如需尽快获得更好的帮助,请发帖SSCCE
  • 对于“奖金问题”,您应该有一个新帖子。在同一个帖子中讨论多个问题变得太复杂了。
  • 不,感谢 Andrew,在 cami,这不是一个大问题,所以我只是添加了它以防万一我能得到答案。

标签: java swing mouselistener


【解决方案1】:

请是您的JLabel 可移动/可拖动,在其他情况下,您的问题并没有让我感到真实,因为层次结构中最深的JComponenet 默认采用Focus / MouseListeners,无论如何看看SwingUtilities,有方法可以将相对坐标返回给父级

【讨论】:

  • 谢谢。是的,它是可移动的。我会关注你的链接。
  • 就是这样。我尝试使用 getComponent.getParent.... 但是当我拖出时我得到了 NPE。有了它,我可以拖出去,我不必让父母处理拖,是的,钉它。
【解决方案2】:

但是当我将鼠标侦听器添加到 JLabel 时,当标签的鼠标侦听器接收到事件时,JPanel 的鼠标侦听器停止接收事件。

是的,这就是鼠标事件处理的工作方式。只有第一个具有侦听器的组件才会接收到该事件。将事件沿组件层次结构向上传递给每个组件并不是很有效。

我只是想给JLabel添加一个鼠标监听器,而不阻塞它下面JPanel的鼠标监听器。

您可以在附加到标签的鼠标侦听器中处理此问题,然后将事件重新调度到父面板。查看 API 中 Component 类的 dispatchEvent(...) 了解更多信息。

【讨论】:

    猜你喜欢
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    • 1970-01-01
    • 2012-08-01
    • 2012-07-19
    • 1970-01-01
    相关资源
    最近更新 更多