我有一个JscrollPane,它包含我绘制的JPanel。我想使用MouseWheelEvent:
每个动作本身都有效,但我不能让它们都起作用。只要我将MouseWheelListener添加到JPanel,该事件就不会到达JScrollPanels列表器。
如果未在JPanel中使用过,那么如何将MouseWheelEvent转发到JScrollPanes MouseWheelListener?
编辑:感谢提示:是否还有一种方法可以让两个听众都听?因为滚动窗格中的滚动实际上是默认实现的。那么有没有办法在没有任何额外实现的情况下使用它?
谢谢&问候, 马克
答案 0 :(得分:2)
让您的自定义侦听器将事件(它不想自己处理)发送给发件人的父级,最终,scrollPane会将其选中:
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;
}
};
答案 1 :(得分:1)
注册侦听器时,可以指定在检测到特定行为时执行的方法。假设我有:
如果listener1阻止listener2监听,则只需在触发listener1时调用method1和method2。