You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vaadin Flow v25:TreeGrid如何选中中间节点且不展开子节点?

解决Vaadin 25 TreeGrid中间节点无法选中的问题

问题分析

默认情况下,TreeGrid的层级列点击节点区域会触发展开/折叠操作,且仅叶子节点可被选中。要实现点击中间节点直接选中,仅点击展开图标控制折叠/展开,需要调整两个核心设置:开启节点选择模式,限制展开触发范围到仅图标区域。

修改后的代码示例

package myapp;

import java.util.ArrayList;
import java.util.List;

import com.vaadin.flow.component.html.Div;
import com.vaadin.flow.component.treegrid.TreeGrid;
import com.vaadin.flow.component.treegrid.TreeGrid.SelectionMode;
import com.vaadin.flow.router.Route;

@Route("/tree")
public final class TestTreeGrid extends Div {

    public class Node {
        Node(String n) { name = n; }
        String name;
        public String getName() { return name; }
        List<Node> children = new ArrayList<>();
        public List<Node> getChildren() { return children; }
    }

    Node getRoot() {
        Node root = new Node("root");
        Node c1 = new Node("1");
        Node c2 = new Node("2");
        root.children.add(c1);
        root.children.add(c2);
        c1.children.add(new Node("1.1"));
        c1.children.add(new Node("1.2"));
        c2.children.add(new Node("2.1"));
        return root;
    }

    TestTreeGrid() {
        TreeGrid<Node> treeGrid = new TreeGrid<>();
        // 1. 开启选择模式(单选/多选根据需求调整)
        treeGrid.setSelectionMode(SelectionMode.SINGLE);
        treeGrid.setItems(getRoot().children, Node::getChildren);
        // 2. 添加层级列并设置仅点击图标时展开/折叠
        var hierarchyColumn = treeGrid.addHierarchyColumn(Node::getName);
        hierarchyColumn.setExpandOnClick(false);
        
        // 可选:监听选中事件,验证功能
        treeGrid.addSelectionListener(event -> {
            event.getFirstSelectedItem().ifPresent(node -> {
                System.out.println("选中节点: " + node.getName());
            });
        });
        
        add(treeGrid);
    }
}

关键改动说明

  • 开启选择模式:通过setSelectionMode启用单选或多选,这是节点能被选中的前提。
  • 限制展开触发范围:调用层级列的setExpandOnClick(false),将展开/折叠操作的触发范围限制到左侧的展开图标上,点击节点名称区域会触发选中而非展开。
  • 这样设置后,中间节点(如"1"、"2")点击名称区域会被选中,点击左侧图标才会展开/折叠子节点,叶子节点的选中行为保持正常。

内容的提问来源于stack exchange,提问作者abcdefg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 13:07:37