2010-05-23 60 views
0

我正在開發一個存儲參與者可以申請的課程的系統。 我在課程管理員GUI中介紹了JTree中的註冊。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

我不確定我是否理解這個問題,但是......爲什麼「對於每個註冊,它都添加了一個新的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()) {