2015-12-04 5 views
1

Я пытаюсь удалить и заменить прослушиватель колесика мыши на ScrolledComposite в SWT. Прокрученный композит имеет метод removeMouseWheelListener, однако он не имеет возможности получить доступ к слушателю колесика мыши, чтобы удалить его. Метод, который я попробовал getListeners():Как удалить прослушиватель колесика мыши в SWT

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

Зачем вам нужно добавлять и удалять слушателя? Я не понимаю. Если вы хотите, чтобы какой-либо конкретный зритель мыши просто добавил новый, используя метод addMouseWheelListener(). Но если вы не хотите, чтобы ваш слушатель колесика мыши ничего не делал, просто ничего не делал в public void mouseScrolled (MouseEvent e) – SomeDude

+0

В моем ScrolledComposite добавлен MouseWheelListener. То, что я хочу сделать, это удалить эту и вставить новую. Если это невозможно сделать, почему существует метод removeMouseWheelListener()? – Terrik

ответ

1

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

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