就像这样:

PDMinterface pdmI = new PDMinterface();
DefaultMutabletreeNode rootTreeNode = pdmI.getDocTree(); //文档树根结点,由PDM接口提供
DefaultTreeModel treeModel = new DefaultTreeModel(rootTreeNode);
treeModel.setAsksAllowsChildren(true);我确信folder5被设置为允许孩子:
public DefaultMutableTreeNode getDocTree(){
DefaultMutableTreeNode root = new DefaultMutableTreeNode();
root.setAllowsChildren(true);
FolderNode rootFolder = new FolderNode(0, "root", "Jiajun", true);
root.setUserObject(rootFolder);
for(int i=0; i < 5; i++){
DefaultMutableTreeNode newnode = new DefaultMutableTreeNode();
newnode.setAllowsChildren(true);
FolderNode newFolder = new FolderNode(i+1, "Folder" + Integer.toString(i+1), "Jiajun", false);
newnode.setUserObject(newFolder);
root.add(newnode);
if(i < 4){
for(int j=0; j < 5; j++){
DefaultMutableTreeNode newdocNode = new DefaultMutableTreeNode();
newdocNode.setAllowsChildren(false);
DocNode newDoc = new DocNode(10*(i+1) + j, "Document" + Integer.toString(10*(i+1)+j), "Jiajun");
newdocNode.setUserObject(newDoc);
newnode.add(newdocNode);
}
}
}发布于 2013-07-23 22:20:31
为了比我的评论更有帮助,我在AbstractTreeClass中找到了以下代码,它将控制分配给节点的图像:
/**
* Returns the resource reference for icon of specified tree node.
*
* @param node
* The node
* @return The package resource reference
*/
protected ResourceReference getNodeIcon(TreeNode node)
{
if (node.isLeaf() == true)
{
return getItem();
}
else
{
if (isNodeExpanded(node))
{
return getFolderOpen();
}
else
{
return getFolderClosed();
}
}
}因此,整个问题就变成了isLeaf()方法返回什么的问题。我在DefaultMutableTreeNode类中发现了这个:
public boolean isLeaf()
{
return children.size() == 0;
}因此,您的组合似乎会将所有没有子元素的元素视为叶子,而不是文件夹。也许您可以使用getAllowsChildren重写getNodeIcon方法,进行必要的类型调整……
另一个想法是重写DefaultMutableTreeNode的isLeaf()方法,但如果在无法控制的地方调用它,可能会出现其他意想不到的问题……
这只是你如何做到这一点的一些见解...希望能对你有所帮助。
发布于 2013-07-24 15:14:26
您使用的是哪个Wicket版本?旧的树实现在6.x中被弃用,在7.x中被删除,所以你应该使用org.apache.wicket.extensions.markup.html.repeater.tree包中的新实现-它不再基于Swing类。
发布于 2013-07-23 19:57:49
问题出在外部for循环中的线路if(i < 4){上。您允许该节点具有子节点,但没有为最后一个节点创建任何子节点。
编辑:你对空文件夹的判断是正确的,所以我的答案是错误的。在Swing中,这是预期的。当呈现树行时,绘制文件夹或文件图标的决定基于标志setAsksAllowsChildren。所以问题似乎出在Wicket的树组件上
https://stackoverflow.com/questions/17809452
复制相似问题