继承了DefaultMutableTreeNode之后add重载如何写

时间:2022-05-21 19:29:38
我要在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成员略
}

6 个解决方案

#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自己本身,当然出错了,真是笨到家了

散分了

#6


该回复于2015-05-26 10:07:07被管理员删除

#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自己本身,当然出错了,真是笨到家了

散分了

#6


该回复于2015-05-26 10:07:07被管理员删除