2012-01-08 158 views
3

科贝尔先生是上死了,非常感谢您添加“无效”的鼠标监听

我有一个鼠标监听器上JPanel其正常工作。我试图给JLabel添加一些滚动支持,但是当我将鼠标监听器添加到JLabel时,JPanel的鼠标监听器在标签的鼠标监听器接收事件时停止接收事件。

我只想添加一个鼠标监听器到JLabel而不阻止其下的JPanel鼠标监听器。谢谢。

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

+0

为了更快提供更好的帮助,请发布[SSCCE](http://sscce.org/)。 – 2012-01-08 02:53:26

+0

对于“奖金问题”,你应该有一个新的发布。在同一篇文章中讨论多个问题会变得很复杂。 – camickr 2012-01-08 03:18:20

+0

不用了,谢谢安德鲁和卡米,这不是一个大问题,所以我只是把它加入以防万一我能得到答案。 – Jeremy 2012-01-08 05:58:44

回答

3

请你JLabel移动/ dragable,在其他情况下,你的问题没有让我真正SENCE,因为在层次最深JComponenet采取默认对焦/ MouseListeners,反正看SwingUtilities,也有方法可以返回到相对坐标父

+0

谢谢。它是可移动的。我会跟随你的链接。 – Jeremy 2012-01-08 05:55:47

+0

就是这样。我尝试过使用getComponent.getParent ....但当我拖出时我得到了NPE。有了这个,我可以拖出来,我不必让父母处理拖动soooo yea,钉住它。 – Jeremy 2012-01-08 06:20:41

2

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

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

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

您可以在连接到标签的鼠标侦听器中处理此事件,然后将事件重新分派到父面板。查看API中Component类的dispatchEvent(...)以获取更多信息。