我刚学tree的用法,你可以看看下面的联接
http://java.sun.com/docs/books/tutorial/uiswing/components/tree.html

解决方案 »

  1.   

    添加节点:
        DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();//此为返回你想要往其下面添加孩子的节点(得选取)
        if( selectedNode == null ) return;    DefaultMutableTreeNode newNode = new DefaultMutableTreeNode( "new" );
        model.insertNodeInto( newNode,selectedNode,selectedNode.getChildCount() );//model 为你的Tree的模型(存放数据的)    //display new node
        TreeNode[] nodes = model.getPathToRoot( newNode );
        TreePath path = new TreePath( nodes );
        tree.scrollPathToVisible( path );删除节点:
        DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();//返回待删除的节点
        if( selectedNode != null && selectedNode.getParent() != null ) {
            model.removeNodeFromParent( selectedNode );
        }
      

  2.   

    谢谢,不过我还有一些疑问,你说DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();是返回要添加孩子的结点,那是不是说我使用二叉查找树的话就应该先通过插入数字的大小来判断到底应该接到哪个结点上?那么我又是应该通过什么来传递我输入的那个数值呢?使用insertNum.getText()?这个参数又应该传到哪里?我觉得应该是DefaultMutableTreeNode newNode = new DefaultMutableTreeNode( insertNum.getText() );就可以得到结点的名称了,而前面你所说的只是选取哪个结点吧。还有一点是我的Tree的模型使用的是如下:
    package Foundation;
    import java.util.*;
    import java.io.Serializable;public class SearchTreeNode {
      Comparable contents;
      SearchTreeNode left;
      SearchTreeNode right;
      
      SearchTreeNode(Comparable obj)
      {
        contents = obj;
        left = null;
        right = null;
      }  public String toString()
      {
        return contents.toString();
      }  boolean isInternal ()
      {
        return (left != null) || (right != null);
      }
    }
    但是我使用SearchTreeNode来代替model有错误(这个类是定义在另外一个.java源文件里的),显然是没有insertNodeInto()方法的。我定义了private javax.swing.JTree BinaryTree = new javax.swing.JTree();那么insertNodeInto()方法是在哪个类下面的呢?能不能再帮我看看,谢谢了。
      

  3.   

    insertNodeInto()方法DefaultTreeModel类的一个方法