添加“非活动”鼠标侦听器

时间:2012-01-08 00:03:40

标签: java swing mouselistener

Korbel先生已经死了,非常感谢

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

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

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

2 个答案:

答案 0 :(得分:3)

请你的JLabel可移动/可拖动,在其他情况下你的问题不会让我真正意义上的,因为层次结构中最深的JComponenet默认采用Focus / MouseListeners,无论如何看{{3 ,有方法可以返回父亲的相对坐标

答案 1 :(得分:2)

  

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

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

  

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

您可以在附加到标签的鼠标侦听器中处理此问题,然后将事件重新发送到父面板。有关详细信息,请查看API中dispatchEvent(...)类的Component