我需要TableView
使其所有列都可排序,但是我不希望通过按住Shift键并单击列来使其成为多列可排序的。有什么办法可以防止这种情况发生?
最佳答案
您可以将侦听器添加到sortOrder
的TableView
的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);
}
});