在VBox中,我已经有两个网格窗格。现在我想在它们之间插入一个新的锚点窗格。如果我使用以下代码,
vBoxPane.getChildren().add(anchorPane);
它会最后插入锚窗格,但我希望它位于网格窗格之间。有什么办法吗?
答案 0 :(得分:0)
由于您使用VBox
作为主容器,因此其子容器的索引会确定其垂直位置。
因此,如果要将子节点放在中间,只需将其插入getChildren()
方法返回的列表的中间。
这是一个完整的可运行示例:
public class Example extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
GridPane gridTop = new GridPane();
GridPane gridBottom = new GridPane();
VBox mainPanel = new VBox(gridTop, gridBottom);
Label topLabel = new Label("Top");
gridTop.add(topLabel, 0, 0);
Button createAnchorPane = new Button("Create AnchorPane");
gridBottom.add(createAnchorPane, 0, 0);
createAnchorPane.setOnAction(event -> {
Label centerLabel = new Label("Center");
AnchorPane newPane = new AnchorPane();
newPane.getChildren().add(centerLabel);
// add the anchor pane in the middle
mainPanel.getChildren().add(1, newPane);
});
Scene scene = new Scene(mainPanel, 400, 400);
primaryStage.setScene(scene);
primaryStage.show();
}
}