我注意到 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);
任何帮助都会很棒。谢谢!