ddark008
@ddark008

Как изменить MouseWheelListener c помощью javassist?

Есть скомпилированное java приложение без исходных кодов. Требуется изменить реакцию программы на движение колёсиком мыши. Изначально стоит движение вверх/вниз, хочется сделать приближение/удаление, оно реализовано кнопками интерфейса.

Очевидный вариант - использовать javassist. Но есть один нюанс - он не работает с внутренними и анонимными классами. Поэтому просто создать ещё один MouseWheelListener не получится, вроде вот такого:
this.removeMouseWheelListener(this.getMouseWheelListeners()[0]);
MouseWheelListener mwl = new MouseWheelListener(){
        @Override
        public void mouseWheelMoved(MouseWheelEvent mwe) {
                AbstractCanvas.this.setZoom(AbstractCanvas.this.getZoom() + mwe.getUnitsToScroll() * 20, null, mwe.getPoint());
                AbstractCanvas.this.refreshComponents();
        }
    };
this.addMouseWheelListener(mwl);


Можно создать MouseWheelListener отдельным классом, но как тогда адекватно обращаться к методу AbstractCanvas.this.setZoom()?

На этом мои скромные познания в java закончились и я пришёл сюда.

Какие вообще есть варианты решения этой проблемы?
  • Вопрос задан
  • 113 просмотров
Пригласить эксперта
Ответы на вопрос 1
@kapioprok
Здравствуйте, обратить внимания на класс abstractcanvas.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы