JavaFX清除anchorpane中的所有节点并在运行时添加新节点

时间:2017-07-07 00:34:16

标签: java user-interface javafx observablelist

我在运行时将节点添加回AnchorPane时遇到问题。

我要做的是当用户点击按钮时,当前节点存储在ObservableList<Node>中,然后AnchorPane被清除。在此之后,我需要在那里添加新节点。然后,当用户完成后,他们点击另一个按钮,我保存的ObservableList应该被添加回AnchorPane

基本上我在用户点击“客户”按钮时尝试显示客户信息表单,然后显示那里的节点。

有不同的方法吗?没有在另一个窗口中显示它? 我使用.addAll(),但这不起作用。

感谢。

private ObservableList<Node> middlePaneContent;
@FXML
private AnchorPane middlePane;
@FXML
private void setMiddlePane(){
    middlePaneContent = middlePane.getChildren();
    //middlePane.setVisible(false);
    middlePane.getChildren().clear();
}
@FXML
private void setInspectionToMiddlePane(){
    //middlePane.getChildren().addAll(middlePaneContent);
    middlePane.setVisible(true);
}

1 个答案:

答案 0 :(得分:2)

您只是在middlePane中存储对middlePaneContent的子列表的引用。两者都指向同一个列表。清除其中一个将清除“其他”。

使用另一个List来存储数据:

private List<Node> middlePaneContent = new ArrayList<>();

@FXML
private AnchorPane middlePane;

@FXML
private void setMiddlePane(){
    // copy content to another list
    middlePaneContent.clear();
    middlePaneContent.addAll(middlePane.getChildren());

    //middlePane.setVisible(false);

    // clear child list
    middlePane.getChildren().clear();
}