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 个赞