我正在创建一个产品列表屏幕,其中产品按类别列出。我成功地做到了这一点,并且我已经实现了一个更改监听器,它将打印选定的树项目。 但我只想选择产品而不是类别。这是我迄今为止所做的代码。
我想知道的事情:- 如何从列表中仅选择产品名称而不是类别名称。
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
最佳答案
我通过逻辑代码解决了这个问题。我搜索了选定的 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");
}
关于java - 使用更改监听器 javafx 仅选择 TreeView 的子项目(树项目),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34255824/