我想更改TableView的排序行为,以便初始排序降序,然后升序,然后返回未排序状态。 TableColumnHeader类似乎控制着排序顺序转换:
private void sortColumn(final boolean addColumn) {
...
// the column is already being sorted, and it's the only column.
// We therefore move through the 2nd or 3rd states:
// 1st click: sort ascending
// 2nd click: sort descending
// 3rd click: natural sorting (sorting is switched off)
...
}
我没有看到通过API直接更改订单的方法。任何人对我如何实现这个有任何想法?
答案 0 :(得分:1)
或者,如果您的列包含 LocalDateTime 或其他非字符串值...
fxColPublishedDate.setComparator(fxColPublishedDate.getComparator().reversed());
propertyTable.getSortOrder().add(fxColPublishedDate);
答案 1 :(得分:1)
我通过如前所述反转比较器来实现这一目标:
column.setComparator(column.getComparator().reversed());
然后隐藏排序箭头:
column.setSortNode(new Group());
答案 2 :(得分:0)
在Java 8中,您可以将列的比较器设置为与通常的比较器相反。例如:
TableColumn<MyDataType, String> col = ... ;
col.setComparator(Collator.getInstance().reversed());