如何在 SWT 中删除鼠标滚轮监听器
How to remove a mouse wheel listener in SWT
我正在尝试删除和替换 SWT 中 ScrolledComposite 上的鼠标滚轮侦听器。滚动的组合有一个 removeMouseWheelListener 方法,但是它无法访问鼠标滚轮侦听器以将其删除。我试过 getListeners() 方法:
MouseWheelListener mouseWheelListener = (MouseWheelListener) scrollable.getListeners(SWT.MouseWheel)[0];
但这会产生转换错误,因此 getListeners 不得检索相同类型的侦听器。我尝试创建一个新的侦听器并将其从 ScrolledComposite 中删除:
MouseWheelListener scroller = new MouseWheelListener() {
@Override
public void mouseScrolled(MouseEvent e) {
Point currentScroll = scrollable.getOrigin();
scrollable.setOrigin(currentScroll.x, currentScroll.y - (e.count * 5));
}
};
scrollable.removeMouseWheelListener(scroller);
虽然这不会删除侦听器。当然,如果我可以访问添加的原始 MouseWheelListener,这将不是问题,但我没有。
谢谢。
getListeners
将为鼠标滚轮侦听器 return 类型 TypedListener
的侦听器。
TypedListener.getEventListener()
将 return MouseWheelListener
。
我正在尝试删除和替换 SWT 中 ScrolledComposite 上的鼠标滚轮侦听器。滚动的组合有一个 removeMouseWheelListener 方法,但是它无法访问鼠标滚轮侦听器以将其删除。我试过 getListeners() 方法:
MouseWheelListener mouseWheelListener = (MouseWheelListener) scrollable.getListeners(SWT.MouseWheel)[0];
但这会产生转换错误,因此 getListeners 不得检索相同类型的侦听器。我尝试创建一个新的侦听器并将其从 ScrolledComposite 中删除:
MouseWheelListener scroller = new MouseWheelListener() {
@Override
public void mouseScrolled(MouseEvent e) {
Point currentScroll = scrollable.getOrigin();
scrollable.setOrigin(currentScroll.x, currentScroll.y - (e.count * 5));
}
};
scrollable.removeMouseWheelListener(scroller);
虽然这不会删除侦听器。当然,如果我可以访问添加的原始 MouseWheelListener,这将不是问题,但我没有。 谢谢。
getListeners
将为鼠标滚轮侦听器 return 类型 TypedListener
的侦听器。
TypedListener.getEventListener()
将 return MouseWheelListener
。