Javafx TableView 排序在单击列标题时首先使用升序,然后在第二次单击时使用降序。我有一个包含运动队数据的表格,其中包含胜利、失败等列。默认情况下,胜利应按降序排序,损失按升序排序,因此当单击标题一次时,每个类别中最好的团队始终位于顶部。
我已经sortType="DESCENDING"
在 fxml 文件和setSortType(TableColumn.SortType.DESCENDING)
代码中尝试过,但没有任何效果。
Javafx TableView 排序在单击列标题时首先使用升序,然后在第二次单击时使用降序。我有一个包含运动队数据的表格,其中包含胜利、失败等列。默认情况下,胜利应按降序排序,损失按升序排序,因此当单击标题一次时,每个类别中最好的团队始终位于顶部。
我已经sortType="DESCENDING"
在 fxml 文件和setSortType(TableColumn.SortType.DESCENDING)
代码中尝试过,但没有任何效果。
在我的用例中,二级排序选项更像是一个障碍。我想出的解决方案只允许以一种方式对列进行排序,单击标题在已排序和不用于排序之间切换。
只允许降序排序更简单,只需要一个表 sortOrder 的监听器。但是,仅允许升序排序需要向列 sortTypeProperty 添加一个侦听器,并且对于使用 shift 键进行多重排序才能正常工作,还必须在表 sortOrder 侦听器中强制执行正确的排序。
columnLosses.sortTypeProperty().addListener(o -> {
if (columnLosses.getSortType().equals(TableColumn.SortType.DESCENDING)) {
table.getSortOrder().remove(columnLosses);
}
});
table.getSortOrder().addListener((Observable o) -> {
if (table.getSortOrder().contains(columnWins)) {
columnWins.setSortType(TableColumn.SortType.DESCENDING);
}
if (columnLosses.getSortType().equals(TableColumn.SortType.DESCENDING)) {
columnLosses.setSortType(TableColumn.SortType.ASCENDING); // needed for correct multicolumn sorting
}
});