JTree - 添加节点的问题

时间:2010-05-23 11:38:21

标签: java jtree

我正在开发一个系统,用于存储参与者可以申请的课程。 我在课程管理员GUI中展示了JTree中的注册。

我的问题是,对于每次注册,它都会添加一个新的courseNode。

已经尝试了很多个小时,希望我现在可以得到一些建议,指出我正确的方向。 谢谢。

    private void updateJTree() {
    for (Category cat : catcontrol.getAllCategoriesList()) {

        category = new DefaultMutableTreeNode(cat);


        for (Course c : ccontrol.getAllCourses()) {

            if (cat.getIdCategory() == c.getIdCategory()) {
                for (Enrollment e : econtrol.getAllEnrollments()) {
                    if (e.getIdCourse() == c.getIdCourse()) {
                        if (cat.getIdCategory() == c.getIdCategory() && e.getCourse().equals(c)) {
                            root.add(category);
                        }

                        if (c.getIdCourse() == e.getIdCourse()) {

                            course = new DefaultMutableTreeNode(c);
                            category.add(course);
                            enrollment = new DefaultMutableTreeNode(e.getParticipant().getFirstNames());
                            course.add(enrollment);

                        }
                    }
                }
            }
        }
    }

    jTree1.setModel(new DefaultTreeModel(root));
    jTree1.addTreeSelectionListener(this);

    jTree1.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
}

1 个答案:

答案 0 :(得分:1)

我不确定我是否理解这个问题,但是......为什么“每次注册都会增加一个新的课程节点”?因为你告诉它。就在这里:

course = new DefaultMutableTreeNode(c);
    category.add(course);
enrollment = new DefaultMutableTreeNode(e.getParticipant().getFirstNames());
    course.add(enrollment);

添加课程,然后添加注册。永远成对。现在我不知道你的数据结构,但我敢说这不是你想要的。你能更详细地描述Enrollment是什么(一个人?人名单?其他什么?),getParticipant()返回什么,你想在树中出现什么?

还有一条评论 - 您确实意识到这两个if语句会检查相同的内容,对吧?你可以摆脱内在的,因为它没有做任何事情。或者,更有可能的是,重写做一些有用的事情(但是,正如我所说,我不太确定你想做什么)。

if (e.getIdCourse() == c.getIdCourse()) {
    // ...
    if (c.getIdCourse() == e.getIdCourse()) {