Я еще не нашел элегантного решения, но это работает.
Во-первых, события мыши, полученные фронтом WebView
webViewFront
, должны быть перенаправлены на webViewBack
:
webViewFront.addEventFilter(MouseEvent.ANY, event -> webViewBack.fireEvent(event));
Это позволит кликам, перетаскиваниям и т. Д. c работать с обоими кадрами.
Что касается использования правильного курсора, то это немного сложно. Отображается только курсор спереди WebView
. Поэтому нашему веб-представлению back должно быть разрешено изменять передний курсор:
webViewBack.cursorProperty().addListener((obs, oldCursor, newCursor) -> webViewFront.setCursor(newCursor));
Проблема заключается в том, что webViewFront
постоянно сбрасывает свой курсор к значению по умолчанию, если происходит событие мыши и в этом месте нет гиперссылок в webViewFront
. Поэтому мы предотвращаем этот сброс:
webViewFront.cursorProperty().addListener((obs, oldCursor, newCursor) -> {
if (newCursor != null && "DEFAULT".equals(newCursor.toString())) {
webViewFront.setCursor(webViewBack.getCursor());
}
});
Вместе эти три изменения позволяют двум перекрывающимся WebView с гиперссылками, работающими для обоих.