vaadin - 无法使 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 在运行程序时显示空白(不显示树结构)。需要你的帮助,我可能做错了什么
解决方案
您需要将 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);
}
推荐阅读
- vue.js - 通过 Vue Router 渲染 html 文件
- python - 为什么在将 GridSearchCV 与随机森林回归器一起使用时,每次运行时都会得到不同的调整参数?
- python - 保留以某些文本字符串开头的行
- java - 带有文件协议的 Jmeter HTTP 请求没有占用所有文件
- firebase - 如何禁止使用 Firestore 规则更新某些字段?
- react-native - 如何使用 defaultNavigationOptions 中设置的自定义导航标题访问屏幕组件中定义的 navigationOptions
- openssl - OpenSSL 使用 P-256 或 P-384 密钥在 CSR 上生成非确定性签名,而不是 RSA 密钥?
- javascript - 以新形式实现现有形式
- java - 扩展 CrudRepository,从一列中选择所有?
- python-3.6 - 在 rhel7 上安装 python36-devel 失败