Мне нужно, чтобы все его столбцы отсортировались, но я не хочу, чтобы он сортировался по нескольким столбцам, щелкая по столбцам. Есть ли способ предотвратить это?JavaFX: отключение сортировки нескольких столбцов TableView
3
A
ответ
3
Вы можете добавить прослушиватель 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);
}
});
Спасибо, второй вариант отлично работает. Первый вариант менее изящный, потому что это, вероятно, заставляет слушателя изменений перейти в какой-то ненужный цикл. – Jai