创建动态JTree(控制根节点可见性)

Jef*_*rey 4 java swing jtree

我有一个关于如何动态生成JTrees的问题.有没有办法将根节点设置为不可见而不会使其子节点也不可见?我试图执行以下操作,但它将所有节点显示为不可见.请记住,我想在任何时间点添加和删除根节点的子节点.我添加了评论,因此您可以按照我打算做的事情.让我知道他们是否正在做我不需要的事情,因为我是JTrees的新手并且不了解惯例.我还希望能够为听众选择多个孩子.

    DefaultMutableTreeNode rootNode;
    rootNode = new DefaultMutableTreeNode(); //I want this invisible.

    DefaultTreeModel treeModel = new DefaultTreeModel(rootNode);
    JTree tree = new JTree(treeModel);

    treeModel.addTreeModelListener(this);
    tree.setRootVisible(false); // Sets everything invisible
    tree.setEditable(true); //makes tree dynamic
    tree.setShowsRootHandles(true); //supposedly allows you to see the children of the nodes.

    tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); 
    //I would like the line above to be multi-select; however, this doesn't seem to be an option.

    DefaultMutableTreeNode table = new DefaultMutableTreeNode( "table1");
    rootNode.add(book);

    DefaultMutableTreeNode value = new DefaultMutableTreeNode( "value");
    table.add(value);
Run Code Online (Sandbox Code Playgroud)

在上面的例子中.没有显示任何内容,当我删除"tree.setRootVisible(false)"时,包括节点在内的所有内容都可见.

Mou*_*uss 7

答案非常晚,但我遇到了同样的问题.确保扩展根节点,以使其子节点可见:

yourTree.expandPath(new TreePath(root.getPath()))
Run Code Online (Sandbox Code Playgroud)