Я пытаюсь удалить и заменить прослушиватель колесика мыши на 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, который был добавлен, это не было бы проблемой, но я этого не делаю. Спасибо.
Зачем вам нужно добавлять и удалять слушателя? Я не понимаю. Если вы хотите, чтобы какой-либо конкретный зритель мыши просто добавил новый, используя метод addMouseWheelListener(). Но если вы не хотите, чтобы ваш слушатель колесика мыши ничего не делал, просто ничего не делал в public void mouseScrolled (MouseEvent e) – SomeDude
В моем ScrolledComposite добавлен MouseWheelListener. То, что я хочу сделать, это удалить эту и вставить новую. Если это невозможно сделать, почему существует метод removeMouseWheelListener()? – Terrik