RFR: 8370446: Support dialogs with StageStyle.EXTENDED
Cormac Redmond
duke at openjdk.org
Thu Oct 23 19:53:44 UTC 2025
On Tue, 21 Oct 2025 23:54:55 GMT, Michael Strauß <mstrauss at openjdk.org> wrote:
> Adds the `Dialog.headerBar` property, which allows developers to specify a custom `HeaderBar` when the dialog uses the `EXTENDED` stage style. The property is ignored for all other stage styles.
More strange behaviour, this time using Labels and setting a min height, leads to different behaviours...
<img width="619" height="633" alt="image" src="https://github.com/user-attachments/assets/9e767493-3f80-4ca9-b29c-cba9199b6dac" />
public class DialogBugDemoTwo extends Application {
@Override
public void start(Stage stage) {
Button infoBtn = new Button("Show Two Alerts");
infoBtn.setOnAction(e -> {
showInfo(true, false, "with header, NO min height");
showInfo(false, true, "NO header, with min height");
showInfo(true, true, "with header, with min height");
showInfo(false, false, "NO header, NO min height");
});
stage.setScene(new Scene(new VBox(10, infoBtn), 400, 300));
stage.show();
}
private void showInfo(boolean withHeaderBar, boolean setMinHeight, String desc) {
Alert alert = new Alert(AlertType.INFORMATION);
alert.setHeaderText(null);
alert.initModality(Modality.NONE);
// Set preferred width causing the issue to manifest, no issue without it
alert.getDialogPane().setPrefWidth(600); // Comment out and bug goes away
alert.getDialogPane().setContent(createVbox(desc));
if (setMinHeight) {
alert.getDialogPane().setMinHeight(Region.USE_PREF_SIZE);
}
// Display issues only occur when HeaderBar is set
if (withHeaderBar) {
alert.setHeaderBar(new HeaderBar());
alert.initStyle(StageStyle.EXTENDED);
}
alert.show();
}
private VBox createVbox(String desc) {
final Label lbl1 = new Label(desc + ".... 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0; end of first Label.");
lbl1.setWrapText(true);
final Label lbl2 = new Label("1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0; end of second Label.");
lbl2.setWrapText(true);
return new VBox(lbl1, new VBox(lbl2));
}
public static void main(String[] args) {
launch(args);
}
}
-------------
PR Comment: https://git.openjdk.org/jfx/pull/1943#issuecomment-3438861997
More information about the openjfx-dev
mailing list