automatisch numerierte Tabellenzeilen (javafx)

7

Meine Frage ist, wie man in JavaFX eine neue Tabelle mit dem Index der tableRow in der ersten Spalte erstellt.

Also habe ich eine Klasse erstellt: NrCellFactory.

%Vor%

und dann setze ich meine Spalte wo die Zahlen angezeigt werden sollen:

%Vor%

Wenn ich das Projekt lade, hat nrCol keine Daten ...

Kann jemand das Problem lösen?

Danke

    
Toon Boeckling 05.05.2013, 13:11
quelle

4 Antworten

15

Beispiellösung

Hier ist eine Lösung, die eine Zellenfabrik verwendet:

%Vor%

Einfache alternative Lösung

Und ein einfacheres Beispiel, das eine Zellenwertfactory und keine Zellenfactory für den Normalfall verwendet, in dem alle Elemente in der Hintergrunddatenliste für die Tabelle eindeutig sind und ihr Index über table.getItems().indexOf(p.getValue()) :

%Vor%

Warum ist Ihr Versuch fehlgeschlagen?

Ich konnte nicht genau sagen, warum Ihr Versuch fehlschlug, da ich nicht glaube, dass in Ihrer Frage genügend Code vorhanden ist, um den Fehler genau zu diagnostizieren. Meine Vermutung ist, dass Sie keine Zellwertfactory für die Zeile zur Verfügung gestellt haben und dass auch der Text im Konstruktor der Zelle gesetzt wurde, anstatt dass ein updateItem -Aufruf dazu führte, dass er nicht funktionierte.

Ausführbares Beispiel

Hier ist ein ausführbares Beispiel:

%Vor%     
jewelsea 06.05.2013 21:11
quelle
15

In Java 8 kann es noch einfacher mit Lambda-Ausdruck gemacht werden:

%Vor%     
Michael 13.02.2015 19:29
quelle
3

Dies ist eine universelle (generische) Zellenfabrik, die Sie einfach überall verwenden können:

%Vor%

Verwendung: colRowNum.setCellFactory(new LineNumbersCellFactory());

Löschen Sie +1, wenn Sie 0-indizierte Zeilen benötigen.

EDIT: Hinzugefügt else Block beim Löschen von Elementen

    
Dave_cz 29.03.2017 19:39
quelle
0

Ein einfacher Ansatz, der nicht von indexOf(item) oder von updateItem() abhängt (was das einzige Ereignis sein kann oder nicht, das Sie hören müssten), ist, die Text-Eigenschaft von TableCell an seine zu binden Zeilenindex:

%Vor%

Wenn es Ihnen egal ist, ob Zeilen Daten enthalten oder nicht, können Sie rowIndex < ...size() check entfernen:

%Vor%

    
David Moles 19.12.2017 19:28
quelle

Tags und Links