【发布时间】:2016-07-08 14:33:11
【问题描述】:
我正在开发一个小游戏,它的高分列表由 javafx TableView 显示。我创建了一个子类HighscoreTableView extends TableView,它是一个TableView 节点,它会自动创建我需要的TableColumns,并用构造数据填充它们。
我希望该表在初始化时按默认列排序。我添加了以下代码行:
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 被添加到HighscoreTableViews。我的完整代码可用here。
【问题讨论】:
-
我相信要进行排序,TableView 的
items属性中的列表必须是SortedList,comparator属性绑定到 TableView 之一。这大概是初始值的情况,但是您将其重置。尝试将this.setItems(list.getObservableList());更改为this.getItems().clear;后跟this.getItems().addAll(list);
标签: java sorting javafx tableview