2015-06-12 4 views
2

Я хочу добавить некоторые дочерние узлы к последнему родительскому узлу, но здесь я не работаю с переменными для добавления узлов, и это мой код для получения более подробной информацииКак добавить дочерние узлы к последнему родительскому узлу

Кода:

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) 
        } 

       } 
      } 

     } 

ответ

1

вы можете снимать себя в ноге, создавая свои TreeNodes рядными, в рамках метода add(...), так как вы в конечном итоге не жизнеспособной ссылки, чтобы использовать в коде. Поэтому вместо этого не создавайте объекты дерева узлов в строке, а вместо этого внутри цикла 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())); 
       } 
      } 
     } 
    } 
}