我正在開發一個小遊戲,它有一個由javafx TableView
顯示的高分列表。我創建了一個子類HighscoreTableView extends TableView
這是一個TableView
節點,它會自動創建我需要的TableColumns
並用它們填充結構數據。javafx:默認排序TableView
我希望該表在初始化時按默認列排序。我添加了以下代碼行:
duration.setSortType(TableColumn.SortType.DESCENDING);
this.getSortOrder().add(duration);
duration.setSortable(true);
this.sort();
其中duration是TableColumn
應該定義排序。當然,它被添加到TableView
。但是,當我創建HighscoreTableView
的新實例時,它默認保持未排序,直到用戶單擊其中一個列標題。這是意想不到的,因爲this question,this question和this question表示它應該這樣工作。有任何想法嗎?
用於再現進一步的信息: 的HighscoreTableView
類由一個HighscoreStage extends Stage
類,其中包含與四個標籤一個TabPane
。每個選項卡包含一個HighscoreTableView
,其中包含從靜態Data
對象獲取的不同數據。數據模型是一個類HighscoreEntry
,其中一個ObservableList
被添加到HighscoreTableView
s。我的完整代碼可用here。
我相信爲排序工作在TableView的'items'屬性中的列表必須是一個'SortedList','comparator'屬性綁定到TableView的一個。這大概是初始值的情況,但你重置它。嘗試將'this.setItems(list.getObservableList());'改爲'this.getItems()。clear;'後面跟'this.getItems()。addAll(list);' – Itai