2010-10-08 56 views
1

消耗我有这样的框架:允许家长来处理鼠标事件,如果事件没有被孩子

alt text

这里是发生了什么:

  1. 当我在粉红色的面板,滚动窗格工作得很好。
  2. 当我把鼠标放在深灰色JTextArea滚动窗格不会得到事件。

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

也许一个具体的例子会做。

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

亚当。

+0

我可以抓住JScrollPane的听众和这些添加到每个面板,但我正在寻找一个更广义妥善的解决办法,而不是让组件层次结构中的混乱和只能在一种情况下工作的监听器。 – TacB0sS 2010-10-08 05:33:45

回答

0

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

1

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

而不是MOUSE_EVENT_MASK你会使用AWTEvent.MOUSE_WHEEL_EVENT_MASK,并在适当的控制键状态时将事件传递给滚动窗格。

(如果有人会发布“真实”机制将事件转发给父组件)。

+0

没有我想到的,我会看到我是如何做到这一点的......感谢这个想法。 – TacB0sS 2010-10-08 10:46:00