2012-06-16 29 views
0

我有一個包含另一個JPanel(B)的JPanel(A)。每個面板實現一個MouseMotionListener和一個MouseListener。拖動時只有內/上面板(B)響應此事件。因此,我從A中刪除了MouseMotionListener,從B中刪除了MouseListener。第二項測試顯示A僅在光標位於B之外時才響應。具有相同事件偵聽器的堆棧組件

是否有解決方案,即兩個面板都對同一個偵聽器作出反應。我需要每個事件的getX()方法。每個面板應該在拖動事件中返回另一個x值。所以事件轉發不會是我的情況的解決方案。

非常感謝......

回答

1

我不相信,Swing還提供了事件的冒泡任何支持(一個元素意味着事件不會傳遞到其父)。解決方法是將父對象傳遞給子對象,並在事件發生在子對象上時手動調用它的事件處理函數(不是很好,但工作正常)。

+2

但請務必更改MouseEvent對象的參數以使其有意義,其中包括使鼠標事件的位置相對於父級的座標系。 –