我想在 GWT CellBrowser/Cell Treenon-leaf
的leaf
nodes
同一级别添加。我可以做吗?如果是,如何?因为在返回DefaultNodeInfo
时,我没有选择返回两种ListDataProviders
.
问问题
118 次
2 回答
1
一个简单的解决方案是创建一个超类或接口节点,您的 NonLeafNode 和您的 LeafNode 类扩展/实现:
public class NonLeafNode extends Node{
}
或者
public class NonLeafNode implements Node{
}
然后,您可以为 CellBrowser 或 CellTree 提供一个提供两种类型节点的 ListDataProvider。在底层模型中,例如TreeViewModel,需要调整isLeaf(Object o)和getNodeInfo(T value)函数如下:
public boolean isLeaf(Object value) {
if (value instanceof NonLeafNode) return true;
if (value instanceof LeafNode) return false;
return false;
}
public <T> getNodeInfo(T value){
if (value instanceof NonLeafNode)
// return node info for non-leaf-node
;
else if (value instanceof LeafNode)
// return node info for leaf node
;
return null;
}
于 2013-11-07T12:26:19.810 回答
0
我的出路!
private static class Folder
{
private final String name;
private final List<Folder> folder = new ArrayList<Folder>();
public Folder(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
public void addFolder(Folder p)
{
this.folder.add(p);
}
public List<Folder> getFolders()
{
return folder;
}
}
然后在我们创建的 CustomTreeModel 中覆盖 isLeaf,如下所示
public boolean isLeaf(Object value)
{
if (value instanceof String || (value instanceof Folder && ((Folder) value).getFolders().isEmpty()))
{
return true;
}
return false;
}
于 2013-12-02T09:46:59.140 回答