能让你在弯路上一直走下去死不悔改的,应该就是所谓的不撞南墙不回头,不见黄河心不死的倔犟了吧。。。人可以低头认输,但是一定要让自己心服口服的低头,一定是力所不能及时心甘情愿无话可说的认输。
在myeclipse下通过Matisse4Meyclipse插件拖出来的JTree,默认带有一些分支节点和叶子节点,而这些我们不是我们想要 的东西,通过编写删除节点的代码也只可以运行时调用删除功能,这里有一个简便的办法就是更改自动生成的代码,使之变成想要的自定义的JTree
1.介绍JTree的一个构造方法---JTree(Tree root, boolean asksAllowsChildren)
来自API:返回JTree,指定的TreeNode作为其根,它用指定的方式显示根节点,并确定节点是否为叶节点。
参数:root --- 一个TreeNode对象 asksAllowsChildren ---
如果为 false,则不带子节点的任何节点都是叶节点;如果为 true,则只有不允许带子节点的节点是叶节点
2.更改Matisse4Meyclipse插件自动生成的代码,更改部分为initComponents()中的
jtree_group = new javax.swing.JTree();
为
jtree_group = new javax.swing.JTree(rootNode, false);
3.从数据库构建初始化JTree
DbUtil.java
package com.java1234.util;
import java.sql.Connection;
import java.sql.DriverManager;
public class DbUtil {
//想要连接的数据库的地址
private String dbUrl = "jdbc:mysql://localhost:3306/ar_list";
//用户名
private String userName = "root";
//密码
private String password = "123456";
//数据库驱动包名
private String jdbcName = "com.mysql.jdbc.Driver";
//获取连接
public Connection getCon() throws Exception{
Class.forName(jdbcName);//注册驱动程序,推荐这种方式,不会对具体的驱动类产生依赖
Connection conn = DriverManager.getConnection(dbUrl, userName, password);//建立驱动程序与数据库的连接
return conn;
}
//关闭与数据库的连接
public void conClose(Connection conn) throws Exception{
if(conn != null){
conn.close();
}
}
public static void main(String args[]) throws Exception{
DbUtil dbUtil = new DbUtil();
Connection conn = dbUtil.getCon();
System.out.println("成功建立驱动程序与数据库的连接");
dbUtil.conClose(conn);
System.out.println("成功关闭驱动程序与数据库的连接");
}
}
NodeDao.java
package com.java1234.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class NodeDao {
public ResultSet initData(Connection conn) throws Exception{
String sql = "select * from list_group";
PreparedStatement pst = conn.prepareStatement(sql);
ResultSet rs = pst.executeQuery();
return rs;
}
}
在界面类中增加个初始化JTree的自定义方法initTree(),并在构造函数中添加调用语句
代码
public testJTreeFrm() {
initComponents();
this.initTree();
}
private void initTree() {
Connection conn = null;
try {
conn = dbUtil.getCon();
ResultSet rs = nodeDao.initData(conn);
while (rs.next()) {
DefaultMutableTreeNode newChild = new DefaultMutableTreeNode(rs
.getString("groupName"));
DefaultTreeModel model = (DefaultTreeModel) jtree_group
.getModel();
rootNode.add(newChild);
model.nodeStructureChanged(rootNode);
}
} catch (Exception e) {
// TODO Auto-generated catch block
JOptionPane.showMessageDialog(null, "初始化失败");
e.printStackTrace();
return;
} finally {
try {
dbUtil.conClose(conn);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
我的cnblogs博客:http://www.cnblogs.com/java1234-com/
欢迎光临我师傅小锋哥的网站 Java知识分享网 www.java1234.com
有大量Java资料供学习参考用,一切免费