在Javafx中插入窗格

时间:2016-02-01 12:51:16

标签: java javafx javafx-8

在VBox中,我已经有两个网格窗格。现在我想在它们之间插入一个新的锚点窗格。如果我使用以下代码,

vBoxPane.getChildren().add(anchorPane);

它会最后插入锚窗格,但我希望它位于网格窗格之间。有什么办法吗?

1 个答案:

答案 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();
  }
}