Изменение MouseWheelListener c помощью javassist

200
13 апреля 2017, 16:38

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

Какие вообще есть варианты решения этой проблемы?

READ ALSO
Стоит ли вызывать ServerSocket в потоке-демоне?

Стоит ли вызывать ServerSocket в потоке-демоне?

Пишу небольшое клиент-серверное приложение с использованием сокетовПоявился вопрос

208
FirebaseRecyclerAdapter добавить последний элемент

FirebaseRecyclerAdapter добавить последний элемент

Как сделать так чтоб при добавлении новых элементов в список, последний элемент, который там есть не изменялся и при нажатии на него открылось...

221
Почему метод всегда возвращает 0

Почему метод всегда возвращает 0

Есть метод, но почему то он всегда возвращает 0, а список заполняется в чем проблема?

224