我在运行时将节点添加回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);
}
答案 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();
}