0
在一個VBox中我已經有了兩個Grid Panes。現在我想在它們之間插入一個新的錨點窗格。如果我使用下面的代碼,它會在最後插入錨窗格,但我希望它在gridpanes之間。有什麼辦法嗎?在Javafx中插入一個窗格
在一個VBox中我已經有了兩個Grid Panes。現在我想在它們之間插入一個新的錨點窗格。如果我使用下面的代碼,它會在最後插入錨窗格,但我希望它在gridpanes之間。有什麼辦法嗎?在Javafx中插入一個窗格
由於您使用的是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();
}
}
@James_D我明白你爲什麼鏈接關於ArrayList中的答案複製的,但我不認爲它直接回答OP的問題。 –
它不是? 'getChildren()'返回一個'List';問題是詢問如何將物品放置在該列表中的特定位置。鏈接的問題詢問如何在列表中的特定索引處插入元素。我誠實地看到這兩個問題沒有區別:在這兩種情況下,OP都不知道重載的'add(int index,E element)'方法。 –
@James_D我認爲OP不知道'getChildren()'中元素的順序決定了所示節點的「視覺順序」。這就像這個問題的答案是A-> B-> C,但鏈接答案只是B-> C –