JavaFX создает диалог Alert, который слишком мал - PullRequest
0 голосов
/ 15 марта 2019

Я использую JavaFX 11.0.1 на Java 11 в Linux (KDE Plasma 5.12.2 на openSUSE Tumbleweed 20190314), чтобы создать диалог Alert, который должен выглядеть следующим образом:

Screenshot showing the JavaFX Alert dialog as expected, large enough to make both the text and the OK button visible.

Но большую часть времени, когда Alert создается и показывается, он слишком мал и выглядит так:

Screenshot showing the JavaFX Alert dialog so narrow that the only thing visible within it is half of the window's icon.

Примерно один раз из пяти 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();

, и я также попробовал этот совет , добавив следующее, чтобы попытаться навязать размер чему-то полезному:

alert.getDialogPane().setMinHeight(Region.USE_PREF_SIZE);
alert.getDialogPane().setMinWidth(Region.USE_PREF_SIZE);

, но это дает точно такое же поведение.(Обратите внимание, что даже установка числовых значений для минимальной ширины и высоты по-прежнему не решает проблему.)

Является ли это известной ошибкой в ​​JavaFX 11?Есть ли какой-нибудь известный обходной путь, который я могу использовать, чтобы убедиться, что диалоги Alert действительно читаемы?

1 Ответ

1 голос
/ 16 марта 2019

Уже существует известная проблема , о которой сообщается о той же самой проблеме, затрагивающей Linux с KDE.Это можно проследить до этой ошибки , затрагивающей JavaFX 10 и 11.

Эта проблема предоставляет обходной путь, который работает:

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

, но может оставить предупреждениеизменяемый размер диалога.

...