数据库的结构较简单,所以树的结构也很简单,除去根结点外,总共只有两层。
说明:本方法对于较简单的树结构有效,
数据表结构:
想让第一列作为父节点,第二列作为对应的子节点。在MyEclipse中实现。
1、在类中设置一个DefaultMutableTreeNode属性,作为根节点:
DefaultMutableTreeNode top = new DefaultMutableTreeNode("文件列表");
2、jTree实例:
private void initComponents()
{
jTree1 = new javax.swing.JTree(top);
}
3、填充jTree节点的方法:
public void showTree()
{
conn myconn = new conn();
ResultSet nodeRs;
ResultSet leafRs;
try
{
nodeRs = myconn
.queryDB("select distinct cType from tempDocFiles where position='"
+ this.position + "'"); // 获取所有父节点,即第一列中的唯一值
leafRs = myconn
.queryDB("select cType,fileName from tempDocFiles where position='"
+ this.position + "'");//获取所有子节点,即第二列中所有值
while (nodeRs.next()) // 遍历父节点
{
DefaultMutableTreeNode node = new DefaultMutableTreeNode(
nodeRs.getObject(1)); // 创建个节点
top.add(node);//将当前节点添加到根节点下面
while (leafRs.next())//遍历所有子节点,
{
if (leafRs.getObject(1).toString()// 如果当前记录的第1列值 等于当前父节点
.equals(nodeRs.getObject(1)))
{
DefaultMutableTreeNode leafnode = new DefaultMutableTreeNode(
leafRs.getObject(2));
node.add(leafnode); //则将当前节点添加到当前父节点下,作为其叶子节点
}
}
leafRs.first(); //将游标移到最开始,以便下一轮遍历
}
jTree1.updateUI(); //刷新jTree结构
} catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
4、在需要的地方调用上述方法即可。比如在构造方法中执行:
public mainFrame2()
{
initComponents();
setMinimumSize(new java.awt.Dimension(800, 600));
setMaximumSize(new java.awt.Dimension(800, 600));
setLocationRelativeTo(null);
setResizable(false);
showTree();
jTree1.setRowHeight(25);
}
结果: