递归实现的 ADF Dynamic tree

一个基于扩展: ChildPropertyTreeModel ,用递归实现的动态树. 自己花了点时间搞了个demo, 希望对后来学习的人有点帮助。 这里做一些内容的介绍:

 1: 递归实现:parentId: 树的根节点: treeNode: 当前节点的父节点,如果不是父节点,就以treeNode最后加入的节点为父节点。 以下是代码:

         public void generateTree(int parentId , TreeNode treeNode){
      while(voi.hasNext()){
        Row row = voi.next();       
        int pId= ((Number)row.getAttribute("ParentId")).intValue();
          int id = ((Number)row.getAttribute("Id")).intValue();
            String label=String.valueOf(row.getAttribute("NavLabel"));
            TreeNode tempNode=new TreeNode("Node",label);        
            tempNode.setLevel(((Number)row.getAttribute("NavLevel")).intValue());
            Map map=new HashMap();
            map.put("NavLabel", label);
            map.put("Id", id);
            map.put("NavAction", row.getAttribute("NavAction"));
            tempNode.setAttributes(map);    
            if(pId==parentId || treeNode==null){
              trees.add(tempNode);
              treeNode=tempNode;
            }else if(pId == treeNode.getAttributes().get("Id")){
              treeNode.getChildren().add(tempNode);
            }else{
                TreeNode[] nodes = (TreeNode[])treeNode.getChildren().toArray();
                treeNode = nodes[nodes.length-1];
                treeNode.getChildren().add(tempNode);
            }
            generateTree(parentId,treeNode);
         
      }

  2: navigation.sql 是数据库执行文件.  最终执行如下图:

demo tree

猜你喜欢

转载自genius.iteye.com/blog/1099251