2012-06-16 28 views
0

我有一个包含另一个JPanel(B)的JPanel(A)。每个面板实现一个MouseMotionListener和一个MouseListener。拖动时只有内/上面板(B)响应此事件。因此,我从A中删除了MouseMotionListener,从B中删除了MouseListener。第二项测试显示A仅在光标位于B之外时才响应。具有相同事件侦听器的堆栈组件

是否有解决方案,即两个面板都对同一个侦听器作出反应。我需要每个事件的getX()方法。每个面板应该在拖动事件中返回另一个x值。所以事件转发不会是我的情况的解决方案。

非常感谢......

回答

1

我不相信,Swing还提供了事件的冒泡任何支持(一个元素意味着事件不会传递到其父)。解决方法是将父对象传递给子对象,并在事件发生在子对象上时手动调用它的事件处理函数(不是很好,但工作正常)。

+2

但请务必更改MouseEvent对象的参数以使其有意义,其中包括使鼠标事件的位置相对于父级的坐标系。 –