JavaFX:如何向BorderPane添加和删除节点

4

我希望能够以编程的方式添加和删除BorderPane中的侧边菜单。

问题在于,当我添加一个Node时,它不可见。BorderPaneStackPane是在FXML文件中定义的。

我想要做的事情类似于这样:

StackPane temp = (StackPane) borderPane.getChildren().get(1);
borderPane.getChildren().remove(1);
borderPane.getChildren().add(0, temp);

我尝试了 borderPane.requestLayout(),但它没有起作用。
2个回答

7
你可以使用 setRight 或者 setLeftsetTopsetBottomsetCenter 方法将 Node 添加到不同部位,同样地,getRightgetLeftgetTopgetBottomgetCenter 可以用来获取当前分配的 Node。通过传递 null 值,也可以使用这些设置方法来删除当前设置的 Node例如: 假设你有一个 BorderPane,其右侧放置了一个 StackPane,现在你想将其移动到左侧。
StackPane temp = (StackPane) borderPane.getRight(); // Casting is unnecessary
borderPane.setRight(null);
borderPane.setLeft(temp);

谢谢,这就是我在寻找的。 - Milorad
为什么当我使用borderPane.setAligment()时,被建议使用静态? 我更喜欢以那种方式定位我的节点。 - Lealo

0

从边界面板中删除节点非常简单。声明边界面板ID并使用该ID选择子节点,然后通过以下代码删除指定的侧面(左、右、上、下)。

    @FXML
    private BorderPane borderPane;

    @Override
    public void initialize(URL location, ResourceBundle resources) {
        borderPane.getChildren().remove(borderPane.getLeft());
        borderPane.getChildren().remove(borderPane.getRight());
    }

1
请向作者解释您正在做什么以及为什么他的方法行不通。 - mentallurg
1
@mentallurg 请现在检查。 - Rashmin Mevada
现在还不清楚你的意思,也不知道你的代码在做什么。我对解决方案没有任何意见。让其他人来检查它吧。 - mentallurg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接