Java 通过jdbc用mysql数据库中的数据填充SWING JTREE
我很难掌握如何用数据库中的数据填充SWING JTREE。假设我的数据如下所示:Java 通过jdbc用mysql数据库中的数据填充SWING JTREE,java,mysql,swing,jdbc,jtree,Java,Mysql,Swing,Jdbc,Jtree,我很难掌握如何用数据库中的数据填充SWING JTREE。假设我的数据如下所示: id | parent_fk | folder | 1 | NULL | Customer 2 | NULL | Accounts 3 | NULL | Templates 4 | 1 | TestCustomer 6 | 4 | TestAlbum1 8 | 4
id | parent_fk | folder |
1 | NULL | Customer
2 | NULL | Accounts
3 | NULL | Templates
4 | 1 | TestCustomer
6 | 4 | TestAlbum1
8 | 4 | TestAlbum2
我计划做的是用根来填充一个JFrame JTree(比如信息树),有一个子“TestCustomer”,这个子元素有两个子元素“TestAlbum1”和“TestAlbum2”
迄今为止,我所做的是:
- 执行一个查询,返回上述
- 为id、父项和文件夹创建ArrayList
- 为名为“root”的根创建DefaultMutableTreeNode
- 为id创建DefaultMutableTreeNode以保存“TestCustomer”
public void TreeExample() {
Connection conn = null;
try {
//<editor-fold defaultstate="collapsed" desc="connection">
String CS = "******";
String user = "*****";
String password = "*****";
conn = (Connection) DriverManager.getConnection(CS, user, password);
String prepSqlStatement = "Select * FROM ag_album";
PreparedStatement stat = conn.prepareStatement(prepSqlStatement);
ResultSet rs = stat.executeQuery();
ArrayList id = new ArrayList();
List folder = new ArrayList();
ArrayList parent_fk = new ArrayList();
// create the root node
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
DefaultTreeModel treeModel = new DefaultTreeModel(root);
while (rs.next()) {
id.add(rs.getString("id"));
parent_fk.add(rs.getString("parent_fk"));
folder.add(rs.getString("folder"));
}
int i = 0;
for (Object r : id) {
// create the child nodes
DefaultMutableTreeNode idNode = new DefaultMutableTreeNode(folder.get(i));
root.add(idNode);
i++;
}
info_tree.setModel(treeModel);
} catch (Exception e) {
Logger.getLogger(BrandITFrame.class.getName()).log(Level.SEVERE, null, e);
}
}
我似乎被困在逻辑上,无法找到如何从我的resultSet中获取项目,并将它们作为子项添加到同样来自同一resultSet的父项中
如果有人能帮忙,请提前谢谢 1)使用缩进代码行和代码块的逻辑和一致形式。缩进的目的是使代码的流程更易于遵循!2) 为了更快地获得更好的帮助,请发布一个or。硬编码一些数据以替换数据库。id、父项和文件夹是否应该在一个类中?您将DB逻辑与UI逻辑混合在一起,这使得很难看到问题的确切位置。
int j = 0;
for (Object f : parent_fk) {
idNode.add(new DefaultMutableTreeNode(folder.get(j)));
j++;
}