4

JTreeを動的に生成する方法について質問があります。子も非表示にせずにルートノードを非表示に設定する方法はありますか?次のことを試みましたが、すべてのノードが非表示として表示されます。ルートノードの子をいつでも追加および削除したいことを覚えておいてください。コメントを追加したので、私がやろうとしていることをフォローしてください。私はJTreeに不慣れで、規則がわからないので、彼らが私が必要としないことをしているのかどうか教えてください。また、リスナーに複数の子を選択できるようにしたいと思います。

    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);

上記の例では。何も表示されず、「tree.setRootVisible(false)」を削除すると、ノードを含むすべてが表示されます。

4

4 に答える 4

7

非常に遅い答えですが、同じ問題が発生しました。ルート ノードを展開して、その子が表示されるようにします。

yourTree.expandPath(new TreePath(root.getPath()))
于 2012-09-21T14:36:35.760 に答える
1

私にとってはうまくいきます。私は、ツリーの使用方法に関するSwingチュートリアルのTreeDemoに基づいてテストを行いました。コードをチュートリアルコードと比較して、違いを確認してください。

于 2009-12-16T20:10:59.827 に答える