File Dateien im ListView als Name anzeigen?

MiMa

Top Contributor
Zum Sammeln von Dateien schreibe ich eine ArrayList und speichere diese im File-Format ab.
Java:
ArrayList<File> dateiListe = new ArrayList()
Screen2.jpg
Das GUI Programmierung mit FXML für mich neu ist mache ich das erstmal Schritt für Schritt.
In dem ListView möchte ich gerne nur die Dateinamen anzeigen lassen und nicht die ganze URL.
Ist das ohne weitere möglich?
Danke
Mi
 
Du kannst der ListView eine CellFactory geben, darin kannst du dann beliebigen Text setzen (CellFactory musst du dann im Controller in initialize zuweisen)

Ganz grob etwa:
Java:
listView.setCellFactory(new Callback<ListView<File>, ListCell<File>>() {

    @Override
    public ListCell<File> call(ListView<File> param) {
        ListCell<File> cell = new ListCell<File>() {

            @Override
            protected void updateItem(File item, boolean empty) {
                super.updateItem(item, empty);
                if (!empty && item != null) {
                    setText(/*Was auch immer du anzeigen möchtest*/);
                } else {
                    setText(null);
                }
            }
        };
        return cell;
    }
});
 
Danke für Deinen Code, den muss ich erst mal verstehen?!?
Nunja ich wollte in der listView erstmal nur den Dateinamen darstellen anstatt die gesamte URL.
Meine Lösung wäre den Dateinamen heraus zu ziehen wie
Java:
dateiListe.get(x).getName()
Das Updaten irgendwie mit bindings oder so?
Das GUI programmieren mit FXMl habe ich noch nicht so drauf und muss mich da heran tasten.

Ich denke das eine weitere Lösung eine Liste mit Dateiobjekten möglich wäre indem ich neben der URL auch den Dateinamen speichere als auch die Dateieindung und könnte auch ein Icon für die Datei definieren (PDF icon für PDF Dateien) ??

In meinem Konsolenprogramm habe ich einfach eine Dateiliste gemacht und die Dateien in einer schleife verarbeitet.
Ich habe jetzt festgestellt, das es in einer GUI Anwendung ganz anders läuft.
 
Zuletzt bearbeitet:
Wenn du obigen Code benutzt musst du nichts mehr irgendwo aus der Liste ziehen, die updateItem-Methode bekommt ein File-Objekt, und du musst dann (dort, wo der Kommentar steht) nur noch sagen, wie es angezeigt werden soll.
 
Sorry aber ich steh da irgendwie auf dem Schlauch?!?
Ich bin mir nicht sicher was ich bei dem Kommentar eingeben soll?
Versucht hatte ich es mit
Java:
item.getName();
Um den Dateiname zu erhalten
 
Ich erhalte aber keine Anzeigen?
Muss mal prüfen was der Callback für Parameter benötigt.
Wahrscheinlich sind die nicht korrekt.
Java:
public void ladeFensterDateiliste() {
        ArrayList<File> dateiListe = new ArrayList();
        dateiListe = Datei.einlesen(new File(einstellungen.holePfadQuelle()), dateiListe, "");
       
        listviewDateiListe.setCellFactory(new Callback<ListView<File>, ListCell<File>>() {

            @Override
            public ListCell<File> call(ListView<File> param) {
                ListCell<File> cell = new ListCell<File>() {

                    @Override
                    protected void updateItem(File item, boolean empty) {
                        super.updateItem(item, empty);
                        if (!empty && item != null) {
                            item.getName();
                        } else {
                            setText(null);
                        }
                    }
                };
                return cell;
            }
        });

//        ObservableList liste = FXCollections.observableArrayList(dateiListe);
//        listviewDateiListe.setItems(liste);
    } // ladeFensterDateiliste
Ich schätze mal das ich "dateiListe" nicht eingebracht habe!
Ich verstehe die beiden Parameter ListView und ListCell nicht wirklich
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben