SimpleStringProperty und SimpleIntegerProperty TableView JavaFX

8

Also ich versuche zu lernen, JavaFx Tableview zu verwenden, und ich stolperte über dieses Tutorial:

Oracle tableview-Lernprogramm

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

deklarieren müssten

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?

    
Marc Rasmussen 14.11.2012, 14:45
quelle

1 Antwort

24

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%     
jewelsea 14.11.2012, 18:48
quelle

Tags und Links