我正在开发一个系统,用于存储参与者可以申请的课程。 我在课程管理员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);
}
答案 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()) {