【问题标题】:How to display only the filename in a JavaFX TreeView?如何在 JavaFX TreeView 中仅显示文件名?
【发布时间】:2017-10-27 20:55:18
【问题描述】:

所以我想出了如何获取所有文件和目录并将它们添加到树视图,但它显示了完整的文件路径: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 obj);

任何帮助将不胜感激。

【问题讨论】:

标签: java javafx treeview javafx-2 file-manager


【解决方案1】:

使用自定义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());
            }

        };
    }
});

【讨论】:

  • 嘿,谢谢您的解决方案,但我收到一个错误:类型不匹配:无法从新 TreeCell(){} 转换为 TreeCell
  • @Reggie:我忽略了 javafx-2 标签。您可能正在使用 java 7,因此当然不允许使用 lambda。 (现在应该修复。)否则TreeView 的类型参数或您的导入存在问题...
  • 如果可能的话,能否请您解释一下代码的作用。谢谢。
猜你喜欢
  • 2013-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-26
  • 1970-01-01
  • 2011-10-02
相关资源
最近更新 更多