我要在JTREE中多存储一些数据,于是继承了DefaultMutableTreeNode类
在生成树的时候使用 DefaultMutableTreeNode dmt.add(new DefaultMutableTreeNode() )方法出错,
也知道需要修改add方法,可是就不知道该如何改
代码如下,我自己
class CustTreeNode extends DefaultMutableTreeNode{
    private String DepID = null;
    private String DepNote = null;
    
    public CustTreeNode(){
        super();
    }
    public CustTreeNode(String DepID, String DepName, String DepNote){
        super(DepName);
        this.setDepID(DepID);
        this.setDepNote(DepNote);
    }
    public void add(CustTreeNode ctn){       //如何写这个add方法???
        super();     //这是错误的……
        this.setDepID(ctn.getDepID());
        this.setDepNote(ctn.getDepNote());
    }
    //get、set成员略
}

解决方案 »

  1.   


    add(MutableTreeNode newChild) 
    从其父节点移除 newChild,并通过将其添加到此节点的子数组的结尾,使其成为此节点的子节点。這是api上的    我感覺你的需求  好像和這個有點差頭~   
      

  2.   

    dmt.add(new DefaultMutableTreeNode())这句没错啊,你出了什么错?不需要重写add方法,如果你想覆盖add方法,请不要写super(); 要写成super.add()。这才是调用父类的add方法
      

  3.   

    这是错误提示:Exception in thread "main" java.lang.IllegalArgumentException: new child is an ancestor
            at javax.swing.tree.DefaultMutableTreeNode.insert(DefaultMutableTreeNode.java:165)
            at javax.swing.tree.DefaultMutableTreeNode.add(DefaultMutableTreeNode.java:396)
            at CustTreeNode.add(CustTreeNode.java:30)
            at MainForm.FormatTree(MainForm.java:103)
            at MainForm.<init>(MainForm.java:210)
            at MainForm.main(MainForm.java:219)
    0
    Java Result: 1
      

  4.   

    不必重写add方法 如果需要更多的属性加上就是了 获得节点的时候强制转换为testtreenode即可 另外2楼都说的很清楚了super()不是用来在add方法里的 这个表示父类的构造方法。使用super.add(cnt);不过最好把你重载的这个方法去掉 没用
      

  5.   

    我笨了。。今天一天都在忙别的事情,后来仔细一看是new child is an ancestor 错误,自己add自己本身,当然出错了,真是笨到家了散分了