2015-12-13 26 views
2

我正在創建產品列表屏幕,其中產品按類別列出。我這樣做是成功的,我已經實現了一個更改偵聽器,它將打印選定的樹項目。 但我只想選擇產品而不是類別。這是我迄今爲止所做的代碼。使用變更監聽器只選擇樹視圖的子項目(樹項目)javafx

事情我想知道: - 如何從列表中選擇產品名稱而不是類別名稱。

SessionFactory sessionFactory = null; 
    Session session = null; 
    TreeItem<String> CategoryrootItem = null; 
    TreeItem<String> dummyRoot = new TreeItem<>(); 

    try { 
     sessionFactory = HibernateUtil.getSessionFactory(); 
     session = sessionFactory.openSession(); 
     session.beginTransaction(); 

     /*Select categories from database*/ 
     List categoryList = session.createQuery("FROM Category").list(); 
     for (Iterator iterator = categoryList.iterator(); iterator.hasNext();) { 
      Category category = (Category) iterator.next(); 

      CategoryrootItem = new TreeItem<>(category.getCategory_Name()); 
      Set productList = category.getProducts(); 

      //access via new for-loop 
      for(Object object : productList) { 
       ProductHeader productHeader = (ProductHeader) object; 
       TreeItem<String> item = new TreeItem<>(productHeader.getProduct_Name()); 
       CategoryrootItem.getChildren().add(item); 
      } 
      dummyRoot.getChildren().add(CategoryrootItem); 
     } 
     treeView.setRoot(dummyRoot); 
     treeView.setShowRoot(false); 

     session.getTransaction().commit(); 
    } catch (Exception e) { 
     System.out 
       .println("populateSupplierList unable to create session : " 
         + e.getMessage()); 
    } 

    treeView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() { 

      public void changed(ObservableValue observable, Object oldValue, 
        Object newValue) { 

       TreeItem<String> selectedItem = (TreeItem<String>) newValue; 
       System.out.println("Selected Text : " + selectedItem.getValue()); 
      } 

      }); 

The image gives the of the code. I want the product kaju to be selected but not Dry fruits category

回答

2

我通過邏輯代碼解決了這個問題。我搜索了一個選定的TableItem是否有任何孩子。如果它有子項目,那麼它不會被選中,如果它沒有子項目,它將被選中。 有子項目TableItem是一個類別,沒有的是一個產品。

這裏是我的代碼

TreeItem<String> selectedItem = (TreeItem<String>) newValue; 
    if(selectedItem.getChildren().isEmpty()){ 
     System.out.println("Its a product"); 
     } 
    else{ 
     System.out.println("Its a category"); 
     }