【发布时间】:2019-03-15 20:40:42
【问题描述】:
我在 Linux 中的 Java 11 上使用 JavaFX 11.0.1(openSUSE Tumbleweed 20190314 上的 KDE Plasma 5.12.2)来创建一个应该如下所示的Alert 对话框:
但大多数情况下,当 Alert 被创建并显示时,它被渲染得太小,看起来像这样:
大约五分之一的Alert 会正确显示。但其余时间则显示无用的小版本。
用于显示此对话框的代码没有什么异常:
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setTitle("Feature absent");
alert.setContentText(
"Feature \"edit application settings\" has not been finished yet.");
alert.showAndWait();
我还尝试this advice,通过添加以下内容来尝试将大小强制为有用的东西:
alert.getDialogPane().setMinHeight(Region.USE_PREF_SIZE);
alert.getDialogPane().setMinWidth(Region.USE_PREF_SIZE);
但这给出了完全相同的行为。 (请注意,即使为最小宽度和高度设置数值仍然不能解决问题。)
这是 JavaFX 11 中的一个已知错误吗?是否有一些已知的解决方法可以用来确保 Alert 对话框实际上是可读的?
【问题讨论】:
-
你能试试 JavaFX 12 吗?您可以尝试使用此选项运行吗:
java -Djdk.gtk.version=2? -
我现在坚持使用 Java 11。我只是尝试强制使用 GTK 版本 2,但我使用的是 Maven,并且找不到在运行应用程序时获取要使用的自定义 VM 参数的方法。
-
您可以继续使用 Java 11,但使用 JavaFX 12,因为它包含一些针对 Linux 的修复。您可以尝试使用 here 中的新
javafx-maven-plugin而不是exec插件,并且可以添加该选项。 -
我将 JavaFX 版本从 11 更改为 12-ea+14 并重新构建。相同的行为。我只是尝试了
javafx-maven-plugin,但它下载了很多我没想到的谷歌包,然后由于模块可见性错误而失败(与我的应用程序的另一个依赖项有关)。 -
JavaFX 12 已经发布。关于插件,依赖项(模块化和非模块化)应由插件管理。你能运行
mvn -X clean javafx:run看看你是否在命令行中发现了问题吗?如果您有任何可以轻松复制的问题,您可以提交here吗?