我正在创建一个产品列表屏幕,其中的产品按类别列出。我这样做是成功的,我已经实现了一个更改侦听器,它将打印所选的树项。 但我只想选择产品而不是类别。这是我到目前为止所做的代码。
我想知道: - 如何仅从列表中选择产品名称而不是类别名称。
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
答案 0 :(得分: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");
}