Auffüllen einer tableview mit strings
Habe ich gelesen, die API und Beispiele, aber nicht in der Lage bin, zu verstehen, wie das Auffüllen des tableview.
Lassen Sie uns sagen, ich habe eine zweispaltige String-array (String[][]) mit "name-value"-Paare. Ich habe jetzt einfach Lust zum erstellen einer tableview zeigt die Daten in zwei Spalten angezeigt, die den Namen in der ersten und der Wert in der zweiten Spalte für alle Zeilen in das original-array.
Was habe ich versucht? Nichts, aber es scheint, dass Sie brauchen, um zu erstellen observablelists, eine für jede Spalte, die Bindung an seinen jeweiligen Spalte und fügen Sie die Spalte der tableview. Aber das beinhaltet "Fabriken", die in allen Beispielen, die ich gesehen habe, das ist ein Fremdwort für mich.
Ich vermute, das ist einfach, aber ich bin nicht in der Lage zu wickeln meinem Kopf herum. Bitte helfen Sie.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wert Der Zelle Fabrik
Für jede Spalte in Ihrer Tabelle, die Sie einstellen/erstellen einer Wert der Zelle Fabrik. Jede Zeile hat ein entsprechendes Objekt in
tableview.getItems()
. Um zu bestimmen, wie dieses Objekt wird angezeigt, über die Spalten, jede Spalte verwendet seine eigene Zelle mit dem Wert der Fabrik. Die Fabriken nehmen in das Objekt und der Wert angezeigt werden soll.Seit
String[][]
ist ein array vonString[]
's, wir wollen die Fabriken zu nehmen, in einemString[]
und Rückkehr derString
entsprechend seiner Spalte.Beispiel
Hier ist ein Beispiel zum erstellen der Wert der Zelle Fabriken in dieser Art und Weise. Es ist etwas Ausführlicher aber das kann aufgeräumt werden mit den lambdas! (siehe Lambdas Abschnitt).
Ergebnis
Wenn Sie werfen in diesem Beispiel (über den Quellcode), auf einer Bühne, das ist, was Sie bekommen.
Lambdas
Java ist etwas Ausführlicher, vor allem, wenn man mit anonymen Klassen. Zum Glück gibt es Lambda-Ausdrücke, die bringen ein wenig Lesbarkeit zurück zu Java. Hier sind der gleichen Zelle mit dem Wert Fabriken aus das Beispiel, neu geschrieben, mit lambdas.
Quellcode
Hier ist eine Standalone-JavaFX-Klasse, die verwendet Zelle Wert Fabriken in dieser Art und Weise.
[HINWEIS: Die Antwort zu diese anderen StackOverFlow-Frage ist ein weiteres Beispiel dafür. ]
Yeah, es war einfach, Sie dummy. Erstellen einer Reihe-Klasse:
Für jede Zeile in der String-array eine Zeile erstellen-Objekt, das Sie hinzufügen, um eine observableList.
Dann erstellen Sie ein tablecolumn für beide Spalten im array.
(identisch zum Wert)
Anschließend fügen Sie die observableList der tableView mit tableView.setItems(observableList) und schließlich rufen Sie die Methode tableView.getColumns.addAll(fieldName,fieldValue);
(Das macht mich Frage mich, ho, es zu tun, für den Allgemeinen Fall, wo Sie nicht wissen, wie viele Spalten in Ihrem original-String [] [] - array? Könnte das Zeilen-Objekt eine ArrayList zu stellen beliebig viele SimpleStringProperties? Wie würden Sie es auf die ValueFactories?)
Ps. wenn jemand schafft ein mehr Pädagogischer Beispiel werde ich award Ihre post mit der "gelöst" zu markieren.
Können Sie auch versuchen, dies mit ansehen, ohne zu wissen, wie viele Spalten, die Sie hinzufügen, um die Tabelle! so können Sie die anzeigen-Taste, sobald das tableview-header