JavaFX Icons im TreeView werden nicht angezeigt

ProggersWorld

Mitglied
Hallo Zusammen,

mit dem SceneBuilder habe ich eine Anwendung mit einem TreeView erstellt. Funktioniert soweit alles gut. Nun habe ich versucht Icons hinzu zu fügen. Diese werden allerdings nicht angezeigt.
Zuerst wird in der Main Klasse buildTreeView(), der sich in der MainController befindet, aufgerufen:
Java:
MainController mainCtrl = loader.getController();
mainCtrl.buildTreeView();
Der Funktion buildTreeView() sieht wie folgt aus:
Java:
public void buildTreeView() {
    File file = new File(this.prop.getProperty("paths.workspace"));
    ftItem = new FileTreeItem(file);
    expandTreeView(ftItem);
    tvFileList.setRoot(ftItem);
}
    
private void expandTreeView(TreeItem<?> item) {
    if (item != null && !item.isLeaf()) {
        item.setExpanded(true);
        for (TreeItem<?> child : item.getChildren()) {
            expandTreeView(child);
        }
    }
}
Zur guter letzt habe ich im Internet ein FileItemTree-Klasse gefunden und nach meine bedürfnisse angepasst:
Java:
public class FileTreeItem extends TreeItem<File> {

    private boolean isFirstTimeChildren = true;
    private boolean isFirstTimeLeaf = true;
    private boolean isLeaf;
    private boolean isDirectory;
    private String fullPath;

    public static Image folderCollapseImage = new Image("file:src/data/icons/16x16/folder_stand.png");
    public static Image folderExpandImage = new Image("file:src/data/icons/16x16/folder.png");
    public static Image fileImage = new Image("file:src/data/icons/16x16/document_index.png");

    @SuppressWarnings({ "rawtypes", "unchecked" })
    public FileTreeItem(File f) {
        super(f);

        if (f.isDirectory()) {
            this.isDirectory = true;
            this.setGraphic(new ImageView(folderExpandImage));
        } else {
            this.isDirectory = false;
            this.setGraphic(new ImageView(fileImage));
            // if you want different icons for different file types this is where you'd do it.
        }

        this.addEventHandler(TreeItem.branchExpandedEvent(), new EventHandler() {
            @Override
            public void handle(Event event) {
                FileTreeItem source = (FileTreeItem) event.getSource();
                if (source.isDirectory && source.isExpanded()) {
                    ImageView iv = (ImageView) source.getGraphic();
                    iv.setImage(folderExpandImage);
                }
            }
        });

        this.addEventHandler(TreeItem.branchCollapsedEvent(), new EventHandler() {
            @Override
            public void handle(Event event) {
                FileTreeItem source = (FileTreeItem) event.getSource();
                if (source.isDirectory() && !source.isExpanded()) {
                    ImageView iv = (ImageView) source.getGraphic();
                    iv.setImage(folderCollapseImage);
                }
            }
        });
    }
    
    public boolean isDirectory() {
        return (this.isDirectory);
    }

    public String getFullPath() {
        return (this.fullPath);
    }

    @Override
    public ObservableList<TreeItem<File>> getChildren() {
        if (isFirstTimeChildren) {
            isFirstTimeChildren = false;

            super.getChildren().setAll(buildChildren(this));
        }
        return super.getChildren();
    }

    @Override
    public boolean isLeaf() {
        if (isFirstTimeLeaf) {
            isFirstTimeLeaf = false;
            File f = (File) getValue();
            isLeaf = f.isFile();
        }

        return isLeaf;
    }

    private ObservableList<TreeItem<File>> buildChildren(TreeItem<File> TreeItem) {
        File f = TreeItem.getValue();
        if (f != null && f.isDirectory()) {
            File[] files = f.listFiles();
            if (files != null) {
                ObservableList<TreeItem<File>> children = FXCollections.observableArrayList();

                for (File childFile : files) {
                    children.add(new FileTreeItem(childFile));
                }

                return children;
            }
        }

        return FXCollections.emptyObservableList();
    }

}
Irgendwie sehe ich vor lauter Bäume den Wald nicht mehr.
Ich hoffe jemand kann mir ein virtueller Ventilator einschalten damit sich der realler Nebel lichtet. 😉

Im voraus schon mal tausend Dank.

Grüße Raymond
 

ProggersWorld

Mitglied
Hallo,

Problem gefunden. In mein Programm war noch ein setCellFactory versteckt. In dieser wird der Dateipfad in Dateiname umgewandelt. Ich habe das ganze um setGraphic() erweitert und nun funktioniert es.
Java:
tvFileList.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);
                if (empty || item == null) {
                    setText("");
                    setGraphic(null);
                } else {
                    setText(item.getName());
                    if (item.isDirectory()) {
                        setGraphic(new ImageView(folderExpandImage));
                    } else if (item.isFile()) {
                        setGraphic(new ImageView(fileImage));
                    }
                }
            }
        };
    }
});
Grüße Raymond
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
MiMa Fonts, Icons, Bilder in JavaFX Anwendung AWT, Swing, JavaFX & SWT 5
thor_norsk Icons laden nicht in GUI AWT, Swing, JavaFX & SWT 15
I Einbindung eines jpg/png/icons in eine GUI AWT, Swing, JavaFX & SWT 1
VPChief Icons in 2 Jlabels Director nebeneinander anzeigen AWT, Swing, JavaFX & SWT 26
F Icons neben Text in Listview setzen AWT, Swing, JavaFX & SWT 2
A Jtabbed ein Reiter mit zwei icons AWT, Swing, JavaFX & SWT 4
B SWT TreeViewer dynamische Anzeige von Icons AWT, Swing, JavaFX & SWT 3
B Link eines Icons dynamisch gestalten AWT, Swing, JavaFX & SWT 2
JavaInBrain Swing JButton: Zuordnen von Icons AWT, Swing, JavaFX & SWT 4
T Swing Laden eines Icons auf JButton liefert NullPointerException AWT, Swing, JavaFX & SWT 8
T SWT Drag&Drop: Eclipse FileTransfer mit Icons AWT, Swing, JavaFX & SWT 14
P Liste mit Icons und mehreren Spalten AWT, Swing, JavaFX & SWT 7
NR_EIGHT Swing JButton zeigt Icons nicht an AWT, Swing, JavaFX & SWT 3
B "Alte" Swing ICONs gesucht AWT, Swing, JavaFX & SWT 2
X Icons in einer Spalte darstellen AWT, Swing, JavaFX & SWT 6
S 2D-Grafik Icon in Image (System Icons) AWT, Swing, JavaFX & SWT 2
G Unterschiedliche Pfadangabe zu Icons zwischen JApplet und JWindow? AWT, Swing, JavaFX & SWT 2
B Standard Icons wo findet man diese? AWT, Swing, JavaFX & SWT 20
N Button soll die Größ eines Icons haben AWT, Swing, JavaFX & SWT 5
G Swing Icons von JLabel zur Laufzeit ändern AWT, Swing, JavaFX & SWT 3
sylo Position des Icons bei JMenuItem AWT, Swing, JavaFX & SWT 11
L Swing Bilder im Icons-Ordner AWT, Swing, JavaFX & SWT 4
T Swing Icons mit Transparentz... AWT, Swing, JavaFX & SWT 12
Dit_ Verschiedene Icons in einer JTable-Zelle AWT, Swing, JavaFX & SWT 2
L Wieso werden die Icons nicht dargestellt? AWT, Swing, JavaFX & SWT 2
M Icons in Jar AWT, Swing, JavaFX & SWT 3
M Mehrere Icons in einer JComponent AWT, Swing, JavaFX & SWT 5
T Icons in jar AWT, Swing, JavaFX & SWT 17
A JLabel, Icons und GridLayout AWT, Swing, JavaFX & SWT 3
S JTree rendern der Knoten [+] und [-], nicht der Node Icons AWT, Swing, JavaFX & SWT 2
G Icons verkleinern AWT, Swing, JavaFX & SWT 4
M icons für die java.swing components wie jbutton etc AWT, Swing, JavaFX & SWT 5
G Verhindern, das AbstractAction Text und Icons überschreibt? AWT, Swing, JavaFX & SWT 3
DeeDee0815 SWT-Buttons, Icons und die Win32-API AWT, Swing, JavaFX & SWT 3
T Standard Icons AWT, Swing, JavaFX & SWT 7
G Wo finde ich Icons zum runterladen AWT, Swing, JavaFX & SWT 3
S JTable mit Icons in DB speichern AWT, Swing, JavaFX & SWT 10
S Hochauflösende ICONS für Lebensmittel? AWT, Swing, JavaFX & SWT 7
J Icons ueber getRessource lesen AWT, Swing, JavaFX & SWT 5
S JButton auf verkleiner auf größe eines Icons AWT, Swing, JavaFX & SWT 5
A Icons von Kontextmenüeinträgen verschwinden (SWT) AWT, Swing, JavaFX & SWT 2
D Komponenten mit zusätzlichen Icons AWT, Swing, JavaFX & SWT 2
F 2 icons in jtabbedpane, links und rechts von label AWT, Swing, JavaFX & SWT 2
P JMenu / JMenuItem durch Rekursion Icons entfernen AWT, Swing, JavaFX & SWT 4
B PNG-Icons in Toolbar einbinden AWT, Swing, JavaFX & SWT 3
C Icons und Bilder in der JAR AWT, Swing, JavaFX & SWT 9
S Multiselektieren von Icons AWT, Swing, JavaFX & SWT 5
R JTree ohne visible Root aber mit Icons ? AWT, Swing, JavaFX & SWT 2
F Icons des JTrees austauschen AWT, Swing, JavaFX & SWT 2
G JTabel und Icons AWT, Swing, JavaFX & SWT 9
Q CloseAndMaxTabbedPane Icons werden nicht angezeigt AWT, Swing, JavaFX & SWT 4
M Java Datei Icons AWT, Swing, JavaFX & SWT 2
M Windows file icons in Java verwenden AWT, Swing, JavaFX & SWT 2
S JAR -> Icons werden nicht mehr angezeigt AWT, Swing, JavaFX & SWT 11
K icons sauber anzeigen (an hintergrund angepasst) AWT, Swing, JavaFX & SWT 4
Z Problem mit Icons in JTable AWT, Swing, JavaFX & SWT 3
R SWT: Icons im Table vor den Einträgen AWT, Swing, JavaFX & SWT 3
D Auf System-Icons wie die aus JOptionPane zugreifen? AWT, Swing, JavaFX & SWT 6
Hotkey Freie Icons für Anwendung mit Java Look&Feel AWT, Swing, JavaFX & SWT 4
S JTree // Icons AWT, Swing, JavaFX & SWT 2
S [JTree] Icons ohne DefaultTreeCellRenderer AWT, Swing, JavaFX & SWT 6
J Icons mit Text als Menü AWT, Swing, JavaFX & SWT 2
F SkinLF - GTK Icons werden nicht genutz - KDE schon - why? AWT, Swing, JavaFX & SWT 8
F JTree mit anderen Icons AWT, Swing, JavaFX & SWT 7
W Websites mit freien Icons AWT, Swing, JavaFX & SWT 4
G Warum gehen meine Icons/Images nicht weg? AWT, Swing, JavaFX & SWT 2
I Icons in JLists AWT, Swing, JavaFX & SWT 2
G Icons in CTabFolder AWT, Swing, JavaFX & SWT 3
L Buttons und Icons AWT, Swing, JavaFX & SWT 2
W JRadioButtonMenuItem (Icons) AWT, Swing, JavaFX & SWT 13
Z Problemen mit Icons? AWT, Swing, JavaFX & SWT 5
G Overlay-Icons über JTextField AWT, Swing, JavaFX & SWT 5
A Icons und Bilder bei EXE-Datei nicht da AWT, Swing, JavaFX & SWT 5
S JTree Datei Icons ? AWT, Swing, JavaFX & SWT 28
M icons im menubar ? AWT, Swing, JavaFX & SWT 5
G standard system icons AWT, Swing, JavaFX & SWT 1
M JavaFX TreeView - TreeItem - SelectedItem AWT, Swing, JavaFX & SWT 7
W JavaFX JavaFX - TreeView will nicht AWT, Swing, JavaFX & SWT 8
L JavaFX TreeView aufstellen läuft irgendwie auf Endlosschleife AWT, Swing, JavaFX & SWT 3
L JavaFX TreeView Edit Mode über F2 AWT, Swing, JavaFX & SWT 13
ralfb1105 JavaFX TreeView dynamisch aus Datenbank Tabelle erstellen AWT, Swing, JavaFX & SWT 22
B JavaFx TreeView mit file system AWT, Swing, JavaFX & SWT 1
D JavaFX TreeView stylen AWT, Swing, JavaFX & SWT 6
L JavaFX TreeView mit File Objects AWT, Swing, JavaFX & SWT 0
P TreeView automatisch an große von Inhalt anpassen AWT, Swing, JavaFX & SWT 3
P X extends TreeView - eigene Methoden AWT, Swing, JavaFX & SWT 5
I JavaFX Im TreeView, TreeItems sortieren AWT, Swing, JavaFX & SWT 3
B TreeView cellFactory AWT, Swing, JavaFX & SWT 4
D javafx.scene.control.TreeView als dropdown Menü AWT, Swing, JavaFX & SWT 6
K JavaFX Mehrere Cell Editors in einem TreeView Item AWT, Swing, JavaFX & SWT 2
I JavaFX TreeView Pfeil nicht mehr Klickbar machen AWT, Swing, JavaFX & SWT 1
B JavaFX Wie Treeview aus xml erzeugen AWT, Swing, JavaFX & SWT 11
B Convert Treeview to XML AWT, Swing, JavaFX & SWT 9
N JavaFX TreeView mit verschiedenen Datentypen AWT, Swing, JavaFX & SWT 8
C SWT Treeview mit Bilder im Label verändert Expanded Icon AWT, Swing, JavaFX & SWT 1
agent47 JavaFX TreeView Struktur dynamisch einlesen AWT, Swing, JavaFX & SWT 1
Tom299 JavaFX TreeView Expanded-Icon ändern AWT, Swing, JavaFX & SWT 0
ToBJo JavaFX TreeView zerstört sich selbst AWT, Swing, JavaFX & SWT 1
G JavaFX TreeView stylen AWT, Swing, JavaFX & SWT 2
G JavaFX TreeView AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben