我正在Linux上的Java 11上使用JavaFX 11.0.1(openSUSE Tumbleweed 20190314上的KDE Plasma 5.12.2)创建一个Alert对话框,该对话框应如下所示:

java - JavaFX创建的Alert对话框太小-LMLPHP

但是在大多数情况下,创建并显示Alert时,它呈现得太小了,看起来像这样:

java - JavaFX创建的Alert对话框太小-LMLPHP

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对话框真正可读?

最佳答案

关于完全相同的问题,已经存在reported的已知问题,这会影响具有KDE的Linux。可以追溯到此bug,影响JavaFX 10和11。

该问题提供了一种可行的解决方法:

alert.setResizable(true);
alert.onShownProperty().addListener(e -> {
    Platform.runLater(() -> alert.setResizable(false));
});


但这可能会使警报对话框可调整大小。

07-24 18:57
查看更多