Java 通过jdbc用mysql数据库中的数据填充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

我很难掌握如何用数据库中的数据填充SWING JTREE。假设我的数据如下所示:

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”
现在我似乎被困在了如何通过parent_fk循环让孩子链接到正确的家长的问题上

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++;
            }