JTree - Проблемы с добавлением узлов - PullRequest
0 голосов
/ 23 мая 2010

Я разрабатываю систему, в которой хранятся курсы, к которым могут обращаться участники.Я представляю заявки на участие в JTree в курсе администратора.

Моя проблема заключается в том, что для каждой записи добавляется новый узел курса.

Пытался много часов, и надеюсь, что смогу сейчасполучить совет, который укажет мне правильное направление.Спасибо.

    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 Ответ

1 голос
/ 23 мая 2010

Я не уверен, что понимаю вопрос, но ... почему "для каждого зачисления добавляется новый узел курса"? Потому что вы говорите это. Прямо здесь:

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()) {
...