编程语言
首页 > 编程语言> > JavaFX:禁用TableView多列排序

JavaFX:禁用TableView多列排序

作者:互联网

我需要让TableView的所有列都可排序,但我不希望通过按住Shift键并单击各列来使其成为多列可排序的.有什么办法可以防止这种情况发生?

解决方法:

您可以将侦听器添加到TableView的sortOrder属性(这是一个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);
    }
});

标签:javafx,javafx-8,tableview,java
来源: https://codeday.me/bug/20191111/2022651.html