我注意到BorderPane.getCenter()从放置它的区域中删除了它返回的节点。我要做的是将子对象镜像到BorderPane的中心,然后将其放入另一个BorderPane中,以检查我的代码(尝试通过将其设置为null而不选择选项卡时释放内存)。这是我的代码:
TabPane.getSelectionModel().selectedItemProperty().addListener((obs,ov,nv)-{
//checks if "MyTab" tab is selected
if (nv.getText().equals("MyTab")) {
try {
MyTabBP.setCenter(FXMLLoader.load(getClass().getResource("MyTab.fxml")));
MirrorBP.setCenter(MyTabBP.getCenter());
} catch (IOException ex) {
Logger.getLogger(FXMLDocumentController.class.getName()).log(Level.SEVERE, null, ex);
}
}
// else {
// MyTabBP.setCenter(null);
// }
});
我注意到的(当我注释掉else块时)是,在单击MyTab之后,BorderPane MyTabBP将为空,并且在检查MirrorBP(位于另一个选项卡上)之后,这就是我在MyTabBP中加载的fxml所在的位置被插入。在检查BorderPane文档之后,它说
getCenter() 获取属性中心的值。
所以我认为它只会复制MyTabBP中心内部的所有内容。所以我的问题是如何镜像BorderPane的区域(顶部,左侧,底部,右侧,中央)的内容?并希望一旦节点发生更改,它将更新引用该节点的人员。这样我就可以测试这是否真的有效。
MyTabBP.setCenter(null);
任何帮助都会很棒。谢谢!