JavaFX:禁用TableView多列排序

时间:2017-01-17 09:26:16

标签: java javafx tableview javafx-8

我需要TableView让所有列都可以排序,但我不希望它通过按住Shift键单击列来进行多列排序。有没有办法防止这种情况发生?

1 个答案:

答案 0 :(得分:3)

您可以向sortOrder TableView的{​​{1}}属性添加一个监听器,该监听器是ObservableList,并检查此列表是否永远不会有多个条目:

myTableView.getSortOrder().addListener((ListChangeListener.Change<? extends TableColumn> c) -> {
    while (myTableView.getSortOrder().size() > 1) {
        myTableView.getSortOrder().remove(1);
    }
});

但请注意,此方法会使所有后续侦听器的Change对象无效。因此,如果您有sortOrder属性的其他侦听器,则可能需要使用此方法:

myTableView.setOnSort(sortEvent -> {
    while (myTableView.getSortOrder().size() > 1) {
        myTableView.getSortOrder().remove(1);
    }
});