Vaadin 8 TreeGrid - leaf/child 元素是否可以有多个 select,而父元素不能 select?

Vaadin 8 TreeGrid - is it possible to have multi select for leaf/child elements, and have parents not selectable?

Vaadin 8 使用网格。树形网格是根元素可以附加叶元素(子元素)的地方。在我的例子中,我想要 multi select 的网格特征 - 给每一行一个复选框以允许 selecting 多行,但我不希望用户能够 select parent/root 网格中的元素。如何禁用 multi select 树状网格中的根元素,并且只允许 multi select 叶元素?

您无法完全阻止选择,但您可以在出现任何不需要的选择时立即取消选择:

        treeGrid.addSelectionListener(e -> {
            Set<HierarchicalBean> allSelectedItems = e.getAllSelectedItems();
            Set<HierarchicalBean> toRemove = new HashSet<>();
            for (HierarchicalBean b : allSelectedItems) {
                if (!b.hasParent()) {
                    toRemove.add(b);
                }
            }
            for (HierarchicalBean beanToRemove : toRemove) {
                treeGrid.deselect(beanToRemove);
            }
        });