java - 如何在 JavaFX TreeView 中仅显示文件名?

标签 java javafx treeview javafx-2 file-manager

所以我已经弄清楚如何获取所有文件和目录并将它们添加到 TreeView 中,但它显示了完整的文件路径:C/user/file.txt 我只想要文件或文件夹名称而不是路径.

创建列表的代码如下:

private TreeItem<File> buildFileSys(File dir, TreeItem<File> parent){
    TreeItem<File> root = new TreeItem<>(dir);
    root.setExpanded(false);
    File[] files = dir.listFiles();
    for (File file : files) {
        if (file.isDirectory()) {
            buildFileSys(file,root);
        } else {
            root.getChildren().add(new TreeItem<>(file));
        }

    }
    if(parent==null){
        return root;
    } else {
        parent.getChildren().add(root);
    }
    return null;
}

然后我获取返回的 TreeItem 并执行 treeview.setroot(treeItem< File> obj);

任何帮助将不胜感激。

最佳答案

使用自定义cellFactory来确定项目在TreeView中的显示方式:

treeView.setCellFactory(new Callback<TreeView<File>, TreeCell<File>>() {

    public TreeCell<File> call(TreeView<File> tv) {
        return new TreeCell<File>() {

            @Override
            protected void updateItem(File item, boolean empty) {
                super.updateItem(item, empty);

                setText((empty || item == null) ? "" : item.getName());
            }

        };
    }
});

关于java - 如何在 JavaFX TreeView 中仅显示文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44210453/

相关文章:

wpf - 当 IsSelected 和 TreeView 中使用的两种类型时更改 TreeViewItem 模板

java - 带有 NullPointerException 的新 onClickListener (Android)

java - 我什么时候可以安全地查询 View 的尺寸?

javascript - Play 框架 websocket 发生这种情况时不会向前端发送消息

java - 在 java 中,如果我想在一个类中使用 10 个接口(interface),那么它会变得困难吗?

javafx - onAction ="#ClickedClickMe"在 JavaFX FXML 中不起作用

java - 从javafx中的数据模型动态填充ListView

基于 View 属性的WPF颜色节点

java - 通过目录选择器复制选定目录中的文件

delphi - 如何同步2个TTreeview的滚动?