【问题标题】:Allowing parent to process mouse event if event was not consumed by child如果事件未被子级消费,则允许父级处理鼠标事件
【发布时间】:2011-04-22 17:14:18
【问题描述】:

我有这个框架:

会发生什么:

  1. 当我在 Pinkish 面板上时,滚动面板工作正常。
  2. 当我将鼠标放在 深灰色 JTextArea 上时,滚动窗格没有收到事件。

一般来说,我的问题是,如果组件没有处理该特定事件,我如何确保组件的父级接收到该事件,即使该组件具有侦听器并且已启用?

也许一个具体的例子就可以了。

可以看到计算器,计算器绘制在可缩放的图像面板上,可以通过Ctrl+Wheel事件放大和缩小,但是当我不按Ctrl时,我希望滚动面板接收到事件并滚动视口。 (我认为这是总结)

亚当。

【问题讨论】:

  • 我可以获取 JScrollPane 侦听器并将它们添加到每个面板,但我正在寻找更通用的适当解决方案,而不是在组件和侦听器的层次结构中造成混乱仅在一种情况下。

标签: java events swing parent-child


【解决方案1】:

虽然不完全“整洁”,但我的answer in this question 可能适合做你想做的事。

您可以使用AWTEvent.MOUSE_WHEEL_EVENT_MASK 而不是MOUSE_EVENT_MASK,并在控制键状态合适时将事件传递给滚动窗格。

(如果运气好的话,有人会发布一个“真正的”机制来将事件转发到父组件)。

【讨论】:

  • 不完全是我的想法,我会看看我是怎么做到的......谢谢你的想法。
【解决方案2】:

正如我在评论中所描述的,它工作正常......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 2020-03-21
    • 2016-04-25
    • 2021-10-05
    相关资源
    最近更新 更多