2017-05-26 6 views
0

So habe ich herausgefunden, wie alle Dateien und Verzeichnisse zu bekommen und sie der Baumansicht hinzufügen, aber es zeigt mir den vollständigen Dateipfad: C/user/file.txt Ich will nur den Namen der Datei oder des Ordners und nicht den Pfad.Wie wird nur der Dateiname in einem JavaFX TreeView angezeigt?

Der Code, um die Liste zu erstellen, ist wie folgt:

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

ich dann die zurück TreeItem nehmen und tun treeview.setroot (TreeItem < Datei> obj);

Jede Hilfe würde sehr geschätzt werden.

+2

[TreeView.setCellFactory] (https://docs.oracle.com/javase/8/javafx/api/ javafx/scene/control/TreeView.html # setCellFactory-javafx.util.Callback-). – VGR

Antwort

3

ein benutzerdefiniertes Verwenden cellFactory, um zu bestimmen, wie die Elemente in den TreeView gezeigt werden:

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

     }; 
    } 
}); 
+0

Hey danke für die Lösung, aber ich erhalte einen Fehler: Typ nicht übereinstimmen: kann nicht von neuen TreeCell konvertieren () {} zu TreeCell Raggie

+0

@Reggie: Ich übersehen die javafx-2-Tag. Sie verwenden wahrscheinlich Java 7, also sind Lambdas natürlich nicht erlaubt. (Sollte jetzt behoben werden.) Ansonsten gibt es ein Problem mit dem Typparameter von 'TreeView' oder mit Ihren Importen ... – fabian

+0

danke für die Hilfe. Die Lösung funktioniert jetzt. – Raggie

Verwandte Themen