请问treeTable如何获取一个节点的子节点呢?

tree控件可以通过getItems().getChildren(parent)来获取某个节点下的子,请问treeTable控件该如何获得?

getItems() 的返回值强制转换为 TreeTableItems<E> 类型就有 getChildren() 方法了

我也是醉了,怎么这个返回的只是ID的集合

看了下源码,确实是哈,可以再通过 datacontainer 取到具体的实体。

TreeTableItems<BookCover> items = (TreeTableItems<BookCover>) bookCoversTable.getItems();

if (items != null) {
    Collection<UUID> children = (Collection<UUID>) items.getChildren("dfd");
    List<BookCover> bookList = children.stream().map(bookCoversDc::getItem).collect(Collectors.toList());
    }

一次到位算了哦

public  <E extends Entity> Collection<E> getTreeTableChildren(TreeTable<E> tree,Object parentId,String hierarchyProperty){
        Collection ids =tree.getItems().getItemIds();
        return (Collection<E>)ids.parallelStream().filter(id->{
            E parentItem = tree.getItems().getItemNN(id).getValue(hierarchyProperty);
            return parentItem != null && parentItem.getId().equals(parentId);
        }).map(id->{
            return tree.getItems().getItemNN(id);
        }).collect(Collectors.toSet());
    }

嗯。这样就完全自己处理了。也不错。提个小建议,最后既然用了 Collectors.toSet() 的话,方法返回类型最好也是 Set<E>,这样后续要用到 Set 特性也不需要强转。

1 个赞