Ich entwickle ein kleines Spiel, das eine Highscore-Liste von einem javafx TableView
angezeigt hat. Ich habe eine Unterklasse HighscoreTableView extends TableView
erstellt, die ein TableView
Knoten ist, der automatisch den TableColumns
Knoten erstellt, den ich brauche, und ihn mit Konstruktionsdaten füllt.javafx: Tabelle standardmäßig sortieren
Ich möchte diese Tabelle nach einer Standardspalte bei der Initialisierung sortiert werden. Ich habe die folgenden Codezeilen hinzugefügt:
duration.setSortType(TableColumn.SortType.DESCENDING);
this.getSortOrder().add(duration);
duration.setSortable(true);
this.sort();
wo Dauer ist die TableColumn
, die die Sortierung definieren sollte. Natürlich ist es der TableView
hinzugefügt. Aber wenn ich eine neue Instanz von HighscoreTableView
erstelle, bleibt sie standardmäßig unsortiert, bis der Benutzer auf einen der Spaltenköpfe klickt. Dies ist unerwartet, da this question, this question und this question sagen, dass es so funktionieren sollte. Irgendwelche Ideen?
Weitere Informationen für die Wiedergabe: Die HighscoreTableView
Klasse durch eine HighscoreStage extends Stage
Klasse verwendet wird, die eine TabPane
mit vier Tabs enthält. Jede Registerkarte enthält eine HighscoreTableView
mit verschiedenen Daten aus einem statischen Data
Objekt. Das Datenmodell ist eine Klasse HighscoreEntry
, eine ObservableList
von ihnen wird hinzugefügt, um die HighscoreTableView
s. Mein vollständiger Code ist verfügbar here.
Ich glaube, für die Sortierung zu funktionieren, muss die Liste in der 'Items' -Eigenschaft der TableView eine' SortedList' mit der 'comparator' -Eigenschaft sein, die an die von TableView gebunden ist. Dies ist vermutlich der Anfangswert, aber Sie setzen ihn zurück. Versuchen Sie 'this.setItems (list.getObservableList());' in 'this.getItems(). Clear;' gefolgt von 'this.getItems(). AddAll (list);' – Itai