Also ich versuche zu lernen, JavaFx Tableview zu verwenden, und ich stolperte über dieses Tutorial:
In diesem Tutorial zeigen sie, dass Sie, um Ihre tableView zu füllen, sie mit Strings füllen müssen, aber nicht nur mit einem String, den Sie formatieren müssen String
zu einem SimpleStringProperty
Ich habe versucht, ohne das Format und das Ergebnis war, dass keine der Informationen angezeigt werden würde!
Ich fand auch, dass wenn Sie ein Integer
zur Tabelle hinzufügen möchten, Sie es als SimpleIntegerProperty
Nun bin ich ziemlich neu in JavaFx, aber bedeutet das, dass ich, wenn ich ein Objekt erstelle, alle meine ganzen Zahlen und Strings formatieren muss, um meine TableView füllen zu können? es scheint ziemlich dumm, aber vielleicht gibt es einen höheren Zweck? oder gibt es eine Möglichkeit, es zu vermeiden?
Sie müssen Eigenschaften in Ihren Tabellendatenobjekten nicht verwenden, damit sie angezeigt werden können, obwohl die Verwendung von Eigenschaften unter bestimmten Umständen wünschenswert ist.
Der folgende Code zeigt eine Tabelle von Personen an, die auf einer Person-Klasse basiert, die nur String-Felder enthält.
%Vor%Erklärung
Zweck der Verwendung von Eigenschaften und ObservableLists ist, dass es sich um hörbare Elemente handelt. Wenn Eigenschaften verwendet werden und der Wert eines Eigenschaftsattributs im Datamodell geändert wird, wird die Ansicht des Elements in der TableView automatisch aktualisiert, damit sie mit dem aktualisierten Datenmodellwert übereinstimmt. Wenn beispielsweise der Wert der E-Mail-Eigenschaft einer Person auf einen neuen Wert gesetzt ist, wird diese Aktualisierung in TableView angezeigt, da sie auf die Änderung der Eigenschaft wartet. Wenn stattdessen eine einfache Zeichenfolge zur Darstellung der E-Mail verwendet wurde, wird TableView nicht aktualisiert, da Änderungen der E-Mail-Werte nicht berücksichtigt werden.
Die PropertyValueFactory -Dokumentation beschreibt diesen Prozess im Detail:
Ein Beispiel für die Verwendung dieser Klasse ist:
%Vor%In diesem Beispiel wird die Zeichenfolge "firstName" als Referenz zu einem verwendet angenommene firstNameProperty () -Methode im Personenklassen-Typ (was ist der Klassentyp der TableView-Elementliste). Zusätzlich diese Methode muss eine Eigenschaftsinstanz zurückgeben. Wenn eine Methode diese trifft Anforderungen gefunden, dann wird die TableCell damit gefüllt BeobachtbarerWert. Darüber hinaus fügt TableView automatisch ein Beobachter auf den zurückgegebenen Wert, so dass alle Änderungen ausgelöst werden beobachtet von der TableView, die Zelle sofort zu aktualisieren.
Wenn keine Methode existiert, die diesem Muster entspricht, gibt es einen Durchgriff Unterstützung für den Aufruf von get () oder is () (das ist, getFirstName () oder isFirstName () im obigen Beispiel). Wenn eine Methode Übereinstimmend mit diesem Muster ist der von dieser Methode zurückgegebene Wert in einem ReadOnlyObjectWrapper eingewickelt und an die TableCell zurückgegeben. In diesem Fall bedeutet dies jedoch, dass TableCell nicht vorhanden ist kann den ObservableValue für Änderungen beobachten (wie in der erster Ansatz oben).
Aktualisieren
Hier ist ein gegensätzliches Beispiel zu dem ersten Beispiel, das zeigt, wie TableView beobachten und automatisch aktualisieren kann, basierend auf Änderungen an der ObservableList von Elementen und Änderungen am Wert eines eigenschaftsbasierten Elementattributs.
%Vor%