由于某些原因,添加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();
结果:
同时没有vbox.setAlignment(Pos.BASELINE_CENTER)
结果是正确的,符合我的期望:
那么,此行为的原因是什么?如果我错了,可以进行任何修复,如果这是JavaFX的问题,则可以采取解决方法。 谢谢!