JTree使用之调用数据库动态生成JTree
来源:互联网 发布:疯狂美工破解版 编辑:程序博客网 时间:2024/05/22 01:47
项目需求,从数据库动态生成JTree。
有两种方式:1,在树里边定义一个list<Department> child的字段
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package com.sc.po;import java.util.ArrayList;import java.util.List;/** * * @author syj */public class Department { private int id; private String dname; private int pid; private String comment; private List<Department> children=new ArrayList<Department>(); /** * @return the id */ public int getId() { return id; } /** * @param id the id to set */ public void setId(int id) { this.id = id; } /** * @return the dname */ public String getDname() { return dname; } /** * @param dname the dname to set */ public void setDname(String dname) { this.dname = dname; } /** * @return the pid */ public int getPid() { return pid; } /** * @param pid the pid to set */ public void setPid(int pid) { this.pid = pid; } /** * @return the comment */ public String getComment() { return comment; } /** * @param comment the comment to set */ public void setComment(String comment) { this.comment = comment; } /** * @return the children */ public List<Department> getChildren() { return children; } /** * @param children the children to set */ public void setChildren(List<Department> children) { this.children = children; } }数据库
CREATE TABLE `department` ( `id` int(11) NOT NULL AUTO_INCREMENT, `dname` varchar(36) NOT NULL, `pid` int(11) NOT NULL, `comment` varchar(150) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8;
service层
public List<Department> getDepartmentsByPid(int pid)//通过pid构建成树的list集合 { List<Department> resultlist=new ArrayList<Department>(); List<Department> departmentlist=departmentdao.getDepartmentByPid(pid);//通过父节点获得子节点 for(Department department:departmentlist) { List<Department> children=getDepartmentsByPid(department.getId()); department.setChildren(children); resultlist.add(department); } return resultlist; };
view层
构建树:
public static void initTree(List<Department> list, DefaultMutableTreeNode parent) { for (Department department : list) { List<Department> children = department.getChildren(); DefaultMutableTreeNode other = new DefaultMutableTreeNode(new KeyValue( department.getDname(), department)); initTree(children, other); parent.add(other); } }
显示树
DepartmentService departmentService = new DepartmentServiceImpl(); Department department = departmentService.getDepatmentById(1); DefaultMutableTreeNode root = new DefaultMutableTreeNode(new KeyValue( department.getDname(), department)); List<Department> list1 = departmentService.getDepartmentsByPid(department.getId()); initTree(list1,root);// List<Department> list = departmentService.getAllDepatment();// initTree1(list, 1, root); DefaultTreeModel model = new DefaultTreeModel(root); jTree1.setModel(model); jTree1.getSelectionModel().setSelectionMode( DefaultTreeSelectionModel.SINGLE_TREE_SELECTION);
第二种方式,Dapartment 不需要List<Department> childern字段
数据库获取Dapartment表中的所有字段
service
public List<Department> getAllDepatment() { List<Department> list=departmentdao.getAllDepatment(); list.remove(0); return list; }
view
生成树
public static void initTree1(List<Department> list, int pid, DefaultMutableTreeNode parent) { for (Department department : list) { if (department.getPid() == pid) { DefaultMutableTreeNode other = new DefaultMutableTreeNode(new KeyValue( department.getDname(), department)); initTree1(list, department.getId(), other); parent.add(other); } } }
显示数
DepartmentService departmentService = new DepartmentServiceImpl(); Department department = departmentService.getDepatmentById(1); DefaultMutableTreeNode root = new DefaultMutableTreeNode(new KeyValue( department.getDname(), department));// List<Department> list1 = departmentService.getDepartmentsByPid(department.getId());// initTree(list1,root); List<Department> list = departmentService.getAllDepatment(); initTree1(list, 1, root); DefaultTreeModel model = new DefaultTreeModel(root); jTree1.setModel(model); jTree1.getSelectionModel().setSelectionMode( DefaultTreeSelectionModel.SINGLE_TREE_SELECTION);
比较:不用多说了,第一种方式比较容易想,但是烂透了。还是第二种好
截图:两种结果都一样
1 0
- JTree使用之调用数据库动态生成JTree
- jtree
- JTree
- JTree
- JTree
- JTree
- JTree
- JTree
- JTree
- JTree
- JTree
- JTree
- 使用JTree
- Jtree动态加载节点
- JTree用法及JTree使用经验总结
- JTree用法及JTree使用经验总结(转)
- JTree用法及JTree使用经验总结(转)
- JTree用法及JTree使用经验总结
- ios--OpenCV--图片比对方案:基于模板图片的标记识别
- Big Endian 和 Little Endian
- 关闭中国电信的绿色上网服务
- 路过回忆,遇上忧伤
- 编译Android时,添加或者删除system.img中第三方apk、更改Android系统默认语言 .
- JTree使用之调用数据库动态生成JTree
- 全面理解面向对象的 JavaScript
- 在WinCE的C#编程中,需要静态调用C++的动态库,需要添加using System.Runtime.InteropServices
- 大庆“油田子女”必须包分配?
- WEEK8晚第一题(升级版哦,每次运行都可以出现不同学号哦,耶!用srand(time(0))解决,不被rand()局限)
- ByteBuffer用法
- Cocos2d-x 游戏开发之巧用CCDelayTIme实现多个action有序执行,使用CCCallFunc添加action回调
- android4.0隐藏状态栏电池图标
- Android开发: Eclipse中导入项目前有红叉提示但是项目文件内容无错误的解决方法