Select 树视图的唯一子项(树项)使用更改侦听器 javafx
Select only child item (tree item) of treeview using change listener javafx
我正在创建一个产品列表屏幕,其中产品按类别列出。我这样做很成功,并且我已经实现了一个更改侦听器,它将打印 selected 树项目。
但我只想 select 产品而不是类别。这是我到目前为止完成的代码。
我想知道的事情 :- 如何 select 仅来自列表的产品名称而不是类别名称。
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
是否有children。如果它有 children 项,那么它不会被选中,如果它没有 child 项,它将被选中。
那些 TableItem
有 child 项的是一个类别,那些没有的是一个产品。
这是我的代码
TreeItem<String> selectedItem = (TreeItem<String>) newValue;
if(selectedItem.getChildren().isEmpty()){
System.out.println("Its a product");
}
else{
System.out.println("Its a category");
}
我正在创建一个产品列表屏幕,其中产品按类别列出。我这样做很成功,并且我已经实现了一个更改侦听器,它将打印 selected 树项目。 但我只想 select 产品而不是类别。这是我到目前为止完成的代码。
我想知道的事情 :- 如何 select 仅来自列表的产品名称而不是类别名称。
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
是否有children。如果它有 children 项,那么它不会被选中,如果它没有 child 项,它将被选中。
那些 TableItem
有 child 项的是一个类别,那些没有的是一个产品。
这是我的代码
TreeItem<String> selectedItem = (TreeItem<String>) newValue;
if(selectedItem.getChildren().isEmpty()){
System.out.println("Its a product");
}
else{
System.out.println("Its a category");
}