0

我正在开发一个系统来存储参与者可以申请的课程。我在 courseadministratorGUI 中的 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);
}
4

1 回答 1

1

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

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()) {
于 2010-05-23T11:51:01.297 回答