Перенаправление определенных событий на разные элементы стековой панели

#java #javafx #event-handling #mouseevent #openstreetmap

#java #javafx #обработка событий #mouseevent #openstreetmap

Вопрос:

У меня есть JavaFX стековая панель с двумя элементами. Нижний элемент — это веб-просмотр openstreetmap, использующий эту библиотеку. Верхний элемент — это холст, на котором я могу рисовать на карте. Холст обрабатывает некоторые события, такие как прокрутка или перетаскивание, для отображения нужной части и уведомляет карту о соответствии холсту.

Теперь я хочу использовать функциональность, реализованную на нижнем уровне. С помощью щелчка мыши webview может вызывать обработчик событий Java, который дает мне широту и долготу для точки, по которой щелкнули. К сожалению, я не могу получить доступ к этой функциональности с другого уровня, потому что информация, похоже, исходит из кода javascript, который используется в webview.

Как мне перенаправить только событие onMouseClicked на нижний уровень, сохранив остальные события на верхнем уровне. Например, каким-то образом написать код, который имитирует щелчок мыши на нижнем слое в той же позиции, что и щелчок мыши на верхнем слое.

К сожалению, такие решения, как pickOnBounds() и setMouseTransparent(), так не работают, потому что они должны работать независимо от позиции щелчка и по-прежнему блокировать перетаскивание и прокрутку от достижения нижнего слоя.

У меня есть одно решение. Я мог бы вычислить широту и долготу с помощью моего холста. Но я не решаюсь это сделать, потому что я хочу, чтобы мои веб-просмотры выдавали более точные данные (к сожалению, земля не плоская, и это затрудняет перевод 2d-плоскости в точные координаты, это работает, но по краям моего холста получается довольно отрывочно).

Спасибо за помощь!

Комментарии:

1. Прочитайте о обработке событий (в частности, разделы об обработке, фильтрах и обработчиках).