如何在SWT

时间:2015-12-04 20:43:25

标签: java swt scrolledcomposite

我正在尝试在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,这不会有问题,但我没有。 谢谢。

1 个答案:

答案 0 :(得分:1)

getListeners将为鼠标滚轮侦听器返回类型为TypedListener的侦听器。

TypedListener.getEventListener()将返回MouseWheelListener