我有这个框架:
发生的情况是这样的:
- 当我位于粉红色面板上时,滚动 Pane 工作得很好。
- 当我将鼠标放在深灰色 JTextArea 上时,滚动 Pane 不会收到该事件。
一般来说,我的问题是,如果组件没有处理该特定事件,即使该组件具有监听器并且已启用,如何确保该组件的父级接收该事件?
也许一个具体的例子就可以了。
你可以看到计算器,计算器绘制在可缩放的图像面板上,并且可以通过 Ctrl + Wheel 事件进行放大和缩小,但是当我不按 Ctrl 时,我希望滚动 Pane 接收事件并滚动视口(viewport)。 (我认为这就是总结)
亚当。
最佳答案
虽然不完全“整洁”,但我的 answer in this question可能会适合做你想做的事。
您可以使用 AWTEvent.MOUSE_WHEEL_EVENT_MASK
而不是 MOUSE_EVENT_MASK
,并在控制键状态合适时将事件传递到滚动 Pane 。
(如果幸运的话,有人会发布一个“真正的”机制来将事件转发到父组件)。
关于java - 如果子级未使用事件,则允许父级处理鼠标事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3887853/