我需要TableView
让所有列都可以排序,但我不希望它通过按住Shift键单击列来进行多列排序。有没有办法防止这种情况发生?
答案 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);
}
});