Как удалить прослушиватель колеса мыши в SWT

Я пытаюсь удалить и заменить прослушиватель колесика мыши на ScrolledComposite в SWT. Прокручиваемый композит имеет метод 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, который был добавлен, это не было бы проблемой, но у меня ее нет. Спасибо.


person Terrik    schedule 04.12.2015    source источник
comment
Почему вы хотите добавить и удалить слушателя? Я не понимаю. Если вам нужен конкретный прослушиватель колесика мыши, просто добавьте новый с помощью метода addMouseWheelListener(). Но если вы не хотите, чтобы ваш слушатель колесика мыши ничего не делал, просто ничего не делайте в public void mouseScrolled( MouseEvent e )   -  person SomeDude    schedule 04.12.2015
comment
Есть MouseWheelListener, который добавляется в мой ScrolledComposite. Что я хочу сделать, так это удалить это и вставить новое. Если это невозможно сделать, зачем существует метод removeMouseWheelListener()?   -  person Terrik    schedule 05.12.2015


Ответы (1)


getListeners вернет прослушиватель типа TypedListener для прослушивателя колесика мыши.

TypedListener.getEventListener() вернет MouseWheelListener.

person greg-449    schedule 04.12.2015