Java 在多个不同组件中使用事件
我有一个JscrollPane,里面有一个JPanel,我在上面画画。我想使用MouseWheelEvent来:Java 在多个不同组件中使用事件,java,swing,user-interface,Java,Swing,User Interface,我有一个JscrollPane,里面有一个JPanel,我在上面画画。我想使用MouseWheelEvent来: 缩放(使用CTRL+Wheel)面板内容 和滚动滚动滚动窗格(仅使用滚轮) 每一个动作本身都是有效的,但我无法同时做到这两个。只要我将MouseWheelListener添加到JPanel,事件就不会到达JScrollPanels列表器 如果在JPanel中没有使用MouseWheelEvent,如何将它转发给JScrollPanes MouseWheelListener 编辑:
- 缩放(使用CTRL+Wheel)面板内容
- 和滚动滚动滚动窗格(仅使用滚轮)
Marc当您注册一个侦听器时,您会指定一个方法,以便在检测到特定行为时执行。假设我有:
- Listener1执行方法1
- Listener2执行方法2
如果listener1阻止listener2侦听,则在触发listener1时只需调用method1和method2。使您的自定义侦听器将事件(它不希望自己处理)分派给发送者的父级,最终,滚动窗格将拾取它们:
final MouseWheelListener wheel = new MouseWheelListener() {
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
if (shouldHandleHere(e)) {
LOG.info("do-my-own-stuff");
} else {
LOG.info("dispatch-to-parent");
e.getComponent().getParent().dispatchEvent(e);
}
}
public boolean shouldHandleHere(MouseWheelEvent e) {
return (e.getModifiersEx() & MouseWheelEvent.CTRL_DOWN_MASK) != 0;
}
};
谢谢你的回复,有没有办法让两位听众都听呢?请参见编辑。