我在 Linux 中的 Java 11 上使用 JavaFX 11.0.1(openSUSE Tumbleweed 20190314 上的 KDE Plasma 5.12.2)来创建一个如下所示的Alert对话框:
但大多数情况下,当 anAlert被创建并显示时,它呈现的太小了,看起来像这样:
大约五分之一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();
Run Code Online (Sandbox Code Playgroud)
我也试过这个建议通过将下面的尝试规模迫使一些有用的东西:
alert.getDialogPane().setMinHeight(Region.USE_PREF_SIZE);
alert.getDialogPane().setMinWidth(Region.USE_PREF_SIZE);
Run Code Online (Sandbox Code Playgroud)
但这给出了完全相同的行为。(请注意,即使为最小宽度和高度设置数值仍然不能解决问题。)
这是 JavaFX 11 中的已知错误吗?是否有一些已知的解决方法可以用来确保Alert对话框实际上是可读的?
已经针对完全相同的问题报告了一个已知问题,该问题影响带有 KDE 的 Linux。可以追溯到这个bug,影响了JavaFX 10和11。
该问题提供了一种有效的解决方法:
alert.setResizable(true);
alert.onShownProperty().addListener(e -> {
Platform.runLater(() -> alert.setResizable(false));
});
Run Code Online (Sandbox Code Playgroud)
但这可能会使警报对话框的大小可调整。