私はjavafx TableView
によって表示された最高得点リストを持つ小さなゲームを開発しています。私はTableView
ノードであるサブクラスHighscoreTableView extends TableView
を作成しました。これは、必要な場合にはTableColumns
を自動的に作成し、構築時にそれらのデータを埋め込みます。javafx:デフォルトでテーブルビューをソート
初期化時にデフォルトの列でその表をソートする必要があります。
期間がソートを定義する必要がありTableColumn
ある
duration.setSortType(TableColumn.SortType.DESCENDING);
this.getSortOrder().add(duration);
duration.setSortable(true);
this.sort();
:私は、次のコード行を追加しました。もちろん、TableView
に追加されています。しかし、HighscoreTableView
という新しいインスタンスを作成すると、ユーザーが列ヘッダーの1つをクリックするまで、既定ではソートされません。これは予期せぬことです。this question、this question、this questionはそうするべきだと言います。何か案は?再生用
さらなる情報: HighscoreTableView
クラスは4つのタブを有するTabPane
が含まHighscoreStage extends Stage
クラスによって使用されます。各タブにはHighscoreTableView
が含まれ、静的Data
オブジェクトとは異なるデータが使用されています。データモデルはクラスHighscoreEntry
であり、ObservableList
がHighscoreTableView
に追加されます。私のフルコードはhereです。
私は、TableViewの 'items'プロパティのリストを動作させるソートは、' Comparable'プロパティがTableViewのものにバインドされた 'SortedList'でなければならないと考えています。これはおそらく初期値の場合ですが、リセットします。 'this.setItems(list.getObservableList());'を 'this.getItems()。clear;'に続けて 'this.getItems()。addAll(list);'に変更してみてください – Itai