JavaFX TableView更改列排序行为(以DESC而不是ASC开头)

时间:2014-07-14 23:46:21

标签: sorting javafx tableview

我想更改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直接更改订单的方法。任何人对我如何实现这个有任何想法?

3 个答案:

答案 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());