JavaFX Tabellenzellenformatierung

8
%Vor%

Wie kann ich das Format von releaseTime ändern? Im Moment ruft es einen einfachen toString für das Date-Objekt auf.

    
DD. 10.07.2012, 11:27
quelle

8 Antworten

4

Sie können dies durch Zellfabriken erreichen. Siehe
Ссылка
Ссылка
Obwohl der 2. Link ungefähr ListCell ist, ist die gleiche Logik auch auf TableCell s anwendbar.

P.S. Wenn Sie einen Beispielcode benötigen, können Sie ihn hier hinzufügen.

    
Uluk Biy 10.07.2012, 11:46
quelle
8

Wenn Sie die Sortierfunktionen Ihrer TableColumn beibehalten möchten, ist keine der obigen Lösungen gültig: wenn Sie Ihr Date in einen String konvertieren und es in Ihrer TableView anzeigen; Die Tabelle wird es so (so falsch) sortieren.

Die Lösung, die ich gefunden habe, war das Unterklassifizieren der Date-Klasse, um die toString () -Methode zu überschreiben. Allerdings gibt es hier eine Einschränkung: Die TableView verwendet java.sql.Date anstelle von java.util.Date; also müssen Sie die vorherige unterklassifizieren.

%Vor%

Die Tabelle ruft diese Methode auf, um das Datum zu drucken.

Natürlich müssen Sie auch Ihre Date-Klasse in der TableColumn-Deklaration in die neue Unterklasse ändern:

%Vor%

Das gleiche gilt, wenn Sie Ihr Objektattribut an die Spalte Ihrer Tabelle anhängen:

%Vor%

Und schließlich, um die Klarheit zu schärfen, deklarieren Sie den Getter in Ihrer Objektklasse:

%Vor%

Es hat eine Weile gedauert, das herauszufinden, weil es java.sql.Date hinter den Kulissen verwendet; also hoffentlich wird dies anderen Menschen einige Zeit ersparen!

    
Jordan 26.02.2015 15:21
quelle
5

Ich musste das kürzlich machen -

%Vor%

Es ist jedoch ein viel einfacher in Java 8 mit Lamba-Expressionen:

%Vor%

Beeilen Sie sich mit diesem Java 8-Release-Orakel!

    
Andrew B 10.09.2013 21:04
quelle
4

Update für Java FX8:

(Ich bin mir nicht sicher, ob es der richtige Ort für diese Antwort ist, aber ich bekomme das Problem in JavaFX8 und einige Dinge haben sich geändert, wie java.time package)

Einige Unterschiede zu den vorherigen Antworten: Ich halte den Datumstyp in der Spalte, also muss ich sowohl cellValueFactory als auch cellFactory verwenden. I Erstellen Sie eine generische wiederverwendbare Methode zum Generieren der cellFactory für alle Datumsspalten. Ich benutze Java 8 Datum für java.time Paket! Aber die Methode konnte für java.util.date leicht neu implementiert werden.

%Vor%

Die Vorteile sind:

  • Die Spalte ist mit einem "java8 Date" getippt, um das Sortierproblem von @Jordan
  • zu vermeiden
  • Die Methode "getDateCell" ist generisch und kann als util-Funktion für alle Java8-Zeittypen (Local Zoned etc.)
  • verwendet werden
pdem 05.04.2016 14:38
quelle
4

Ich würde empfehlen, Java-Generics zu verwenden, um wiederverwendbare Spaltenformatierungen zu erstellen, die java.text.Format verwenden. Dies verringert die Menge des Boilerplate-Codes ...

%Vor%

Anwendungsbeispiele

%Vor%     
Adam 16.08.2016 05:24
quelle
2

Das habe ich gemacht und ich habe perfekt gearbeitet.

%Vor%     
R3ing 20.12.2016 19:15
quelle
1

Eine universelle Lösung könnte so einfach sein:

%Vor%

Und seine Beispielverwendung:

%Vor%     
Wojciech Marciniak 03.12.2017 04:59
quelle
0

Sie können Eigenschaften verschiedener Typen problemlos pipen und einen Formatierer oder Konverter zwischenschalten.

%Vor%     
Markus Moos 23.12.2017 10:33
quelle

Tags und Links