0

我注意到 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);

任何帮助都会很棒。谢谢!

4

0 回答 0