java - 使用更改监听器 javafx 仅选择 TreeView 的子项目(树项目)

标签 java hibernate treeview

我正在创建一个产品列表屏幕,其中产品按类别列出。我成功地做到了这一点,并且我已经实现了一个更改监听器,它将打印选定的树项目。 但我只想选择产品而不是类别。这是我迄今为止所做的代码。

我想知道的事情:- 如何从列表中仅选择产品名称而不是类别名称。

    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/

相关文章:

java - Android HttpsConnection - 内部服务器错误

java - 更改 JComboboxBox 上的 JScrollPane

java - 如何在 JUnit 测试中初始化数据

session 工厂构建 hibernate 4 中的 java.lang.NullPointerException

C# TreeView 并绑定(bind)到数据库

java - Guice:使用不同的配置创建多个对象实例

java - 如何找出 JMS 主题的所有订阅者都已回复?

java - MySQL: org.hibernate.HibernateException: 找到超过一行的给定标识符 3

c# - WPF 从 TreeView 中移除 ScrollViewer

web-services - 使用 Web 服务获取 SharePoint 中的所有文件夹和子文件夹