Я создаю всплывающие сообщения с подтверждением в своей JavaFX-игре и пытаюсь выяснить, как работает макет. Мой класс PopUp расширяет StackPane и его конструктор выглядит так:JavaFX VBox Resizing
public PopUp (String str)
{
super();
Color dark = Color.rgb(0, 0, 0, 0.35);
setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
setPrefSize(Double.MAX_VALUE, Double.MAX_VALUE);
FXUtil.backgroundColor(dark, this);
Text displayText = new Text(str);
displayText.setFont(FontFactory.general(18.0));
displayText.setFill(Color.WHITE);
displayText.setWrappingWidth(560.0);
buttonBox = new HBox(20.0);
buttonBox.setAlignment(Pos.CENTER);
FXUtil.backgroundColor(Color.GREY, buttonBox);
VBox arrangement = new VBox(20.0, displayText, buttonBox);
arrangement.setAlignment(Pos.CENTER);
arrangement.setMaxWidth(600.0);
FXUtil.backgroundColor(Color.RED, arrangement);
getChildren().add(arrangement);
}
(Класс FXUtil является удобство для установки цвета фона и FontFactory является то, что это звучит как)
Пара кнопок добавляются позже, но я с удивлением вижу, что VBox, компоновка, использует полное вертикальное пространство, хотя его предпочтительная высота - это объединенная высота его детей (плюс вставки и т. д., как в документе). В принципе, это высокий красный бар, который охватывает высоту окна.
Есть ли способ использовать его предпочтительную высоту, а не максимальную высоту? Я бы хотел, чтобы он был достаточно высоким, чтобы соответствовать его детям.
Свойство максимальной высоты можно привязать к его высоте до высоты 1. –
Хорошая идея, но это ничего не изменило. Я добавил: assembly.maxHeightProperty(). Bind (assembly.prefHeightProperty()); но это все еще высокий красный бар. –
Предыдущий комментарий был неправильным. –