【问题标题】:stacked components with same event listener具有相同事件侦听器的堆叠组件
【发布时间】:2012-06-16 18:42:08
【问题描述】:

我有一个 JPanel (A),其中包含另一个 JPanel (B)。每个面板都实现了一个 MouseMotionListener 和一个 MouseListener。在拖动时,只有内部/上面板 (B) 响应此事件。所以我从 A 中删除了 MouseMotionListener,从 B 中删除了 MouseListener。第二个测试表明 A 仅在光标位于 B 之外时才会响应。

是否有解决方案让两个面板都对同一个听众做出反应。我需要每个事件的 getX() 方法。每个面板应在拖动事件中返回另一个 x 值。因此,就我而言,事件转发不是解决方案。

非常感谢...

【问题讨论】:

    标签: java swing events event-handling


    【解决方案1】:

    我不相信 Swing 对事件冒泡提供任何支持(这意味着一个元素上的事件不会传输到其父元素)。解决方法是将父对象传递给子对象,并在子对象上发生事件时手动调用其事件处理程序(不是很好,但可以)。

    【讨论】:

    • 但一定要更改 MouseEvent 对象的参数以使其有意义,包括使 Mouse 事件的位置相对于父级的坐标系。
    猜你喜欢
    • 1970-01-01
    • 2021-06-09
    • 1970-01-01
    • 2012-07-27
    • 2012-07-03
    • 1970-01-01
    • 2018-09-04
    • 2014-07-13
    • 2023-01-29
    相关资源
    最近更新 更多