Есть скомпилированное 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 закончились и я пришёл сюда.
Какие вообще есть варианты решения этой проблемы?