在生成树的时候使用 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
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自己本身,当然出错了,真是笨到家了
散分了
今天一天都在忙别的事情,后来仔细一看是new child is an ancestor 错误,自己add自己本身,当然出错了,真是笨到家了
散分了
#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
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自己本身,当然出错了,真是笨到家了
散分了
今天一天都在忙别的事情,后来仔细一看是new child is an ancestor 错误,自己add自己本身,当然出错了,真是笨到家了
散分了