JavaFX: HBox внутри StackPane не в центре

Я использовал StackPane, где все узлы находятся в центре. Теперь я хочу иметь узел, который является HBox, чтобы я мог иметь горизонтальные элементы в центре. По какой-то причине HBox находится вверху слева, хотя это узел StackPane.

HBox lines = new HBox();
lines.setSpacing(20);
lines.getChildren().addAll(firstLine, secondLine, thirdLine, fourthLine);

Вот часть с HBox, а здесь я добавляю HBox:

StackPane root = new StackPane();
root.getChildren().add(lines);

Что мне не хватает?


person yemerra    schedule 29.10.2015    source источник


Ответы (1)


HBox находится в центре StackPane, точнее, он заполнит все доступное пространство StackPane. Элементы, которые вы видите в левом верхнем углу, связаны с тем, что HBox по умолчанию выравнивает их таким образом. Измените это значение по умолчанию на

lines.setAlignment( Pos.CENTER );
person Uluk Biy    schedule 29.10.2015
comment
Я тоже это только что узнал, спасибо. Проблема, с которой я столкнулся сейчас, заключается в том, что я до сих пор не могу позиционировать узлы, находящиеся внутри HBox. - person yemerra; 29.10.2015
comment
Это действительно старый вопрос, но, возможно, этот ответ поможет кому-то еще, кто придет сюда. Если у вас есть блок (блок V или H), который содержит другие блоки, вы можете расположить элементы внутри их блока V/H, а затем добавить этот блок в родительский блок. Например, если у вас есть узел Text в HBox, который находится в VBox, вы можете центрировать узел Text в HBox, а затем добавить HBox в VBox. - person Andrew Colin; 07.01.2020