理解TreeItem的javadoc

时间:2015-05-27 12:58:04

标签: javafx javafx-8

有人可以解释为什么TreeItem的javadoc使用FXCollections.observableArrayList创建本地子变量,而不是ArrayList,例如。

private ObservableList<TreeItem<File>> buildChildren(TreeItem<File> TreeItem) {
          File f = TreeItem.getValue();
          if (f != null && f.isDirectory()) {
              File[] files = f.listFiles();
              if (files != null) {
                  ObservableList<TreeItem<File>> children = FXCollections.observableArrayList();

                  for (File childFile : files) {
                      children.add(createNode(childFile));
                  }

                  return children;
              }
          }

          return FXCollections.emptyObservableList();
      }

然后按如下方式添加返回的集合

@Override public ObservableList<TreeItem<File>> getChildren() {
          if (isFirstTimeChildren) {
              isFirstTimeChildren = false;

              // First getChildren() call, so we actually go off and 
              // determine the children of the File contained in this TreeItem.
              super.getChildren().setAll(buildChildren(this));
          }
          return super.getChildren();
      }

由于super.getChildren()已经是一个ObservableList,因此将ObservableList添加到ObservableList有什么好处。在我的代码中,我使用ArrayList创建了子项,并在根节点上添加了valueChangedListener,并在为子项设置值时收到了事件。

另一方面,TreeView的javadoc分别添加了TreeItem元素,而不是将它们包装在ObservableList中。

这里有什么特别的东西吗?

0 个答案:

没有答案