读书人

递归兑现的 ADF Dynamic tree

发布时间: 2012-06-28 15:20:03 作者: rapoo

递归实现的 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 是数据库执行文件.? 最终执行如下图:

递归兑现的 ADF Dynamic tree

读书人网 >软件架构设计

热点推荐