【发布时间】:2020-12-03 11:36:16
【问题描述】:
Javafx TableView 排序在单击列标题时首先使用升序,然后在第二次单击时使用降序。我有一个包含运动队数据的表格,其中包含胜利、失败等列。默认情况下,胜利应该按降序排序,而失败则按升序排序,因此当单击标题一次时,每个类别中最好的球队总是排在最前面。
我在 fxml 文件中尝试了sortType="DESCENDING",在代码中尝试了setSortType(TableColumn.SortType.DESCENDING),但没有任何效果。
【问题讨论】:
-
令人惊讶的是,sortOrders 中的循环被硬编码(在 TableColumnHeader,私有方法 sortColumn 中)为未排序 -> 升序 -> 降序 -> 未排序 - 所以我们无能为力。至少不会变脏:a)通过设置倒置比较器(缺点:错误图标)或 b)实现自定义 TableColumnHeader 并替换 onMouseReleasedHandler 调用自定义方法来循环排序顺序(缺点: 需要在内部进行反射摆弄 - 或自定义 jfx 图像)
-
谢谢你,所有有价值的信息。我找到了一个非常适合我的用例的解决方案,将其作为答案发布。
标签: java sorting javafx fxml javafx-tableview