能让你在弯路上一直走下去死不悔改的,应该就是所谓的不撞南墙不回头,不见黄河心不死的倔犟了吧。。。人可以低头认输,但是一定要让自己心服口服的低头,一定是力所不能及时心甘情愿无话可说的认输。
在myeclipse下通过Matisse4Meyclipse插件拖出来的JTree,默认带有一些分支节点和叶子节点,而这些我们不是我们想要的东西,通过编写删除节点的代码也只可以运行时调用删除功能,这里有一个简便的办法就是更改自动生成的代码,使之变成想要的自定义的JTree
1.介绍JTree的一个构造方法---JTree(Tree root, boolean asksAllowsChildren)
来自API:返回JTree,指定的TreeNode作为其根,它用指定的方式显示根节点,并确定节点是否为叶节点。
参数:root --- 一个TreeNode对象 asksAllowsChildren ---
如果为 false,则不带子节点的任何节点都是叶节点;如果为 true,则只有不允许带子节点的节点是叶节点
2.更改Matisse4Meyclipse插件自动生成的代码,更改部分为initComponents()中的
1 jtree_group = new javax.swing.JTree();
为
1 jtree_group = new javax.swing.JTree(rootNode, false);
3.从数据库构建JTree
DbUtil.java和图书管理系统的一样,就是表名更改下即可
NodeDao.java
1 package com.java1234.dao;
2
3 import java.sql.Connection;
4 import java.sql.PreparedStatement;
5 import java.sql.ResultSet;
6 import java.sql.SQLException;
7
8 public class NodeDao {
9 public ResultSet initData(Connection conn) throws Exception{
10 String sql = "select * from list_group";
11 PreparedStatement pst = conn.prepareStatement(sql);
12 ResultSet rs = pst.executeQuery();
13 return rs;
14 }
15 }
需要在界面类中增加个初始化JTree的自定义方法initTree(),并在构造函数中添加调用语句
代码
1 public testJTreeFrm() {
2 initComponents();
3 jpm1 = new JPopupMenu();
4 this.initTree();
5 }
1 private void initTree() {
2 Connection conn = null;
3 try {
4 conn = dbUtil.getCon();
5 ResultSet rs = nodeDao.initData(conn);
6 while (rs.next()) {
7 DefaultMutableTreeNode newChild = new DefaultMutableTreeNode(rs
8 .getString("groupName"));
9 DefaultTreeModel model = (DefaultTreeModel) jtree_group
10 .getModel();
11 rootNode.add(newChild);
12 model.nodeStructureChanged(rootNode);
13 }
14 } catch (Exception e) {
15 // TODO Auto-generated catch block
16 JOptionPane.showMessageDialog(null, "初始化失败");
17 e.printStackTrace();
18 return;
19 } finally {
20 try {
21 dbUtil.conClose(conn);
22 } catch (Exception e) {
23 // TODO Auto-generated catch block
24 e.printStackTrace();
25 }
26 }
27 }
欢迎光临我师傅小锋哥的网站 Java知识分享网 www.java1234.com 有大量Java资料供学习参考用,一切免费