По какой-то причине добавление vbox.setAlignment(Pos.BASELINE_CENTER)
также выделит дополнительный промежуток между разделителем и vbox_child. Его размер такой же, как у vbox_child. Этот простой код работает не так, как ожидалось:
VBox vbox_child = new VBox(50.0);
vbox_child.setBackground(new Background(new BackgroundFill(Color.GREEN, null, null)));
vbox_child.getChildren().add(new Label("hell1"));
vbox_child.getChildren().add(new Label("hell2"));
vbox_child.getChildren().add(new Label("hell3"));
VBox vbox = new VBox(20.0);
vbox.setAlignment(Pos.BASELINE_CENTER);
vbox.setBackground(new Background(new BackgroundFill(Color.ORANGE, null, null)));
vbox.getChildren().add(new Label("INSERT MODEL"));
vbox.getChildren().add(new Separator());
vbox.getChildren().add(vbox_child);
Scene scene = new Scene(vbox, 400, 400);
primaryStage.setTitle("VBox Bug");
primaryStage.setScene(scene);
primaryStage.show();
Результат:
Meanwhile without vbox.setAlignment(Pos.BASELINE_CENTER)
result is correct and matches my expectations:
введите описание изображения здесь
Итак, в чем причина такого поведения? И любые возможные исправления, если я ошибаюсь, или обходные пути, если это проблема JavaFX. Спасибо!