首页 > 解决方案 > 无法使 Vaadin Tree Grid 与文件系统数据提供程序一起使用

问题描述

我有一个要求,其中我需要显示一个包含用户主文件夹层次结构的树,包括文件和文件夹。为此,我一直在尝试使用 Vaadin TreeGrid 和 FileSystemDataProvider

我正在使用 Vaadin 21.0.0 并使用此依赖项

<dependency>
    <groupId>org.vaadin.filesystemdataprovider</groupId>
    <artifactId>filesystemdataprovider</artifactId>
    <version>3.0.0</version>
</dependency>

相同的代码如下

String path = System.getProperty("user.home");
File rootFile = new File(path);
FilesystemData root = new FilesystemData(rootFile, false);
FilesystemDataProvider fileSystem = new FilesystemDataProvider(root);
tree.setDataProvider(fileSystem);
add(tree)

但是,treegrid 在运行程序时显示空白(不显示树结构)。需要你的帮助,我可能做错了什么

标签: vaadinvaadin-flowvaadin-gridvaadin21

解决方案


您需要将 TreeGrid 配置为具有列,例如:

public GridView() {
    File rootFile = new File(path);
    FilesystemData root = new FilesystemData(rootFile, false);
    FilesystemDataProvider fileSystem = new FilesystemDataProvider(root);
    TreeGrid<File> tree = new TreeGrid<>();
    tree.setDataProvider(fileSystem);     
    tree.addHierarchyColumn(file -> file.getName()).setHeader("Name");
    tree.addColumn(file -> file.length()).setHeader("Size");
    tree.setWidth("750px");
    tree.setHeight("500px");
    setSizeFull();
    setAlignItems(Alignment.CENTER);
    setJustifyContentMode(JustifyContentMode.CENTER);
    add(tree);
}

推荐阅读