Comment afficher uniquement le nom de fichier dans une arborescence JavaFX?


J'ai donc compris comment obtenir tous les fichiers et répertoires et les ajouter à l'arborescence, mais cela me montre le chemin complet du fichier: C/user/file.txt je veux juste le nom du fichier ou du dossier et non le chemin.

Le code pour créer la liste est le suivant:

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;
}

Je prends ensuite le TreeItem retourné et fais treeview.setroot(treeItem obj);

Toute aide serait grandement appréciée.

Author: Raggie, 2017-05-27

1 answers

Utiliser une coutume cellFactory pour déterminer comment les éléments sont affichés dans la 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());
            }

        };
    }
});
 3
Author: fabian, 2017-05-29 17:37:56