我想将一些子节点添加到最后一个父节点但是在这里我不使用变量来添加节点,这是我的代码以获取更多细节
代码:
Table table = new Table();
XMLTable xtable = new XMLTable();
File[] files = null;
File projectsDirectory = new File("projects");
files = projectsDirectory.listFiles();
for( File f : files){
if(f.isDirectory()){
root.add(new DefaultMutableTreeNode(f.getName()));// parent node added
for(File fc : f.listFiles()){
if(fc.isFile() && fc.getName().equalsIgnoreCase("table.xml")){
table = xtable.getXMLTable("table.xml");
ArrayList<Column> cols = table.getColumns();
for(Column col:cols){
((DefaultMutableTreeNode) f.getName()).add(new DefaultMutableTreeNode(col.getName()));//don't work (just for test)
}
}
}
}
答案 0 :(得分:1)
您可能会在add(...)
方法中以内联方式创建TreeNodes,从而使自己陷入困境,因为您最终没有可行的引用,以便稍后在代码中使用。因此,不要在线创建树节点对象,而是在for循环中创建TreeNode变量,为其分配对象,将其添加到根,然后使用局部变量添加更多节点需要。
如,
Table table = new Table();
XMLTable xtable = new XMLTable();
File[] files = null;
File projectsDirectory = new File("projects");
files = projectsDirectory.listFiles();
for( File f : files){
if(f.isDirectory()){
TreeNode treeNode = new DefaultMutableTreeNode(f.getName());
root.add(treeNode);// parent node added
for(File fc : f.listFiles()){
if(fc.isFile() && fc.getName().equalsIgnoreCase("table.xml")){
table = xtable.getXMLTable("table.xml");
ArrayList<Column> cols = table.getColumns();
for(Column col:cols){
treeNode.add(new DefaultMutableTreeNode(col.getName()));
}
}
}
}
}