首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加节点时没有显示Jtree!

添加节点时没有显示Jtree!
EN

Stack Overflow用户
提问于 2011-06-08 06:02:27
回答 2查看 3.5K关注 0票数 2

我在滚动窗格中有一个静态的jtree。现在我正试图把孩子添加到jtree中,它被成功地添加了。现在,添加的节点在jtree中不可见。

尝试1:我尝试过使用model.reload()

代码语言:javascript
复制
DefaultTreeModel model = (DefaultTreeModel) (tree.getModel());
TreePath Path = findByName(tree, new String[]{Globals.CONS_UIAPROJECTS});
DefaultMutableTreeNode pnode = (DefaultMutableTreeNode) Path.getLastPathComponent();
model.insertNodeInto(UIAProjectExploreDisplay.nodeProTree, pnode, pnode.getChildCount());
model.reload();

尝试2:我也尝试过使用tree.setModel() .

代码语言:javascript
复制
DefaultTreeModel model = (DefaultTreeModel) (tree.getModel());
TreePath Path = findByName(tree, new String[]{Globals.CONS_UIAPROJECTS});
DefaultMutableTreeNode pnode = (DefaultMutableTreeNode) Path.getLastPathComponent();
model.insertNodeInto(UIAProjectExploreDisplay.nodeProTree, pnode, pnode.getChildCount());

DefaultTreeModel projectTreeModel = new DefaultTreeModel((DefaultMutabletreeNode) model.getRoot());
tree.setModel(projectTreeModel);

即使这样,新添加的子元素也是不可见的。但是它被添加到树中。我通过打印这个孩子来测试。给我一个解决办法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-10 19:17:50

只需尝试以下一行:

代码语言:javascript
复制
model.reload();

检查这个简单的例子。它对我有效,在延迟5秒后显示两个新节点。

代码语言:javascript
复制
/**
 * @param args
 */
public static void main(String[] args) {
    TestTree frame= new TestTree();
    frame.setSize(400, 400);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
    frame.pack();
    MutableTreeNode root = (MutableTreeNode)tree.getModel().getRoot();
    System.out.println("A: "+root.getChildCount());     
    try {
        Thread.sleep(5000);
    }
    catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    root.insert(new DefaultMutableTreeNode("test"), 1);
    ((DefaultMutableTreeNode)root.getChildAt(2)).insert(new DefaultMutableTreeNode("test2"), 1);
    ((DefaultTreeModel)(tree.getModel())).reload();
    System.out.println("B: "+root.getChildCount());
    System.out.println(root.getChildAt(1));
}
票数 2
EN

Stack Overflow用户

发布于 2014-11-17 17:05:56

我认为您可能忘记在TreeNode的插入method...here中设置新节点的父节点是我的代码

代码语言:javascript
复制
public void insert(MyTreeNode newChild, int childIndex) {
    if (!allowsChildren) {
        throw new IllegalStateException("node does not allow children");
    } else if (newChild == null) {
        throw new IllegalArgumentException("new child is null");
    }

        newChild.setParent(this);
        if (children == null) {
            children = new ArrayList<GoodSort>();
        }
        children.add(childIndex,(GoodSort)newChild);
        ((GoodSort)newChild).parent = this;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6274782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档