【发布时间】:2021-11-07 12:36:59
【问题描述】:
我有一个使用 JavaFX 16 制作的应用程序,其中包含一个 WebView,用于使用 Leaflet JS 库显示交互式地图。
当我尝试转换到 JavaFX 17 时遇到问题,交互式地图不再起作用(它无法移动或单击,但可以滚动)。我在使用 Leaflet 的 OpenStreetMap 网站的一个最小示例中重现了该错误:
package test;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class App extends Application {
@Override
public void start(Stage stage) {
WebView webView = new WebView();
webView.getEngine().load("https://www.openstreetmap.org/");
Scene scene = new Scene(new StackPane(webView), 640, 480);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch();
}
}
OpenStreetMap 网站上的交互式地图渲染正确,可以放大但不能移动。
我正在使用 Gradle 下载 JavaFX,这是我的 build.gradle :
plugins {
id 'application'
id 'org.openjfx.javafxplugin' version '0.0.10'
}
repositories {
mavenCentral()
}
javafx {
version = "17"
modules = [ 'javafx.controls', 'javafx.web']
}
application {
mainClass = 'test.App'
}
我用版本重现了这个错误:
- 18-ea+5
- 17.0.1
- 17
- 17-ea+2
但地图适用于版本:
- 16
- 15
看来是版本 17 带来了问题。
我还在 macOS 12(M1 使用 x86 JavaFX 和 Rosetta)和 Ubuntu 20 上重现了该错误。因此,macOS 上的 JavaFX 似乎不是问题。
其他交互式地图,例如 Google 地图、Apple 地图和 Bing 地图,使用与上述相同的代码,并且 MapBoxGL 不工作,因为不支持 WebGL。所以看来这个问题与Leaflet有关。
所以我想知道这是否是一个已知问题,是否其他人也有同样的问题,还是我这边的问题?
【问题讨论】:
-
坚持为您的应用程序使用 JavaFX 16,因为它可以正常工作。提交 JavaFX 错误(搜索相关说明)。
-
你可以在这里报告这个问题:bugs.java.com/bugdatabase
-
我还可以在我的 Mac 上使用 Catalina 10.15.7 确认问题。
-
与 Java 1.8 中的 @mipa 相同; JavaFX 16 正常。
标签: java javafx leaflet javafx-webengine javafx-17