我正在开发一个系统,用于存储参与者可以申请的类(class)。 我在 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);
}
最佳答案
我不确定我是否理解这个问题,但是......为什么“对于每个注册都会添加一个新的类(class)节点”?因为你告诉它。就在这里:
course = new DefaultMutableTreeNode(c);
category.add(course);
enrollment = new DefaultMutableTreeNode(e.getParticipant().getFirstNames());
course.add(enrollment);
添加类(class),然后添加注册。总是成双成对。现在我不知道你的数据的结构,但我敢说这不是你想要的。您能否更详细地描述一下 Enrollment
是什么(一个人?一组人员?其他什么?),以及 getParticipant()
返回什么,以及您希望显示什么在树上?
还有一条评论 - 您确实意识到这两个 if
语句检查同一件事,对吗?你可以摆脱内在的,因为它没有做任何事情。或者,更有可能的是,重写做一些有用的事情(但是,正如我所说,我不太确定你想要做什么)。
if (e.getIdCourse() == c.getIdCourse()) {
// ...
if (c.getIdCourse() == e.getIdCourse()) {
关于java - JTree - 添加节点的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2891541/