2016-08-17 3 views
0

Есть ли способ добавить второй сортировку по умолчанию в список сортировки JavaFX? То, что я хочу сделать, это позволить пользователю щелкнуть заголовки столбцов по умолчанию, но значение моего первого столбца будет тай-брейкером, если не был выбран первый столбец. Я бы предпочел сделать это, все еще привязавшись к TableView comparatorProperty.Сортировка Сортировка списка JavaFX по двум значениям

Я думал о реализации как-то ниже:

SortedList<MyObj> sortedData = new SortedList<>(myFilteredList); 
sortedData.comparatorProperty().bind(myTableView.comparatorProperty()/*.thenComparing(otherComparator) or something like this*/); 

Есть ли способ связать на вершине только для чтения comparatorProperty из в TableView, как это? Есть ли способ лучше?

+0

'TableView' уже поддерживает сортировку по множественным columns.By холдинг' Shift' вы можете добавить вторичные виды, смотри также ['TableView.getSortOrder()'] (https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/TableView.html#getSortOrder--) – fabian

+0

Это правда, но я хочу для создания тайм-выключателя по умолчанию для моего пользователя без этого дополнительного шага. – Agricola

ответ

0

Это немного неуклюжий, но, похоже, он более или менее делает то, что вы ищете. Дело в том, что если вы используете отсортированный список и разрешаете нажимать на заголовки, вам нужно привязать компаратор сортированного списка к компаратору таблицы.

Поэтому я считаю, что лучше всего изменить порядок сортировки, определенный таблицей. Вот простой способ:

TableColumn<S,T> defaultSortColumn = ... ; 
sortedList.comparatorProperty().bind(table.comparatorProperty()); 

// Added an extra '>' for syntax 
table.getSortOrder().addListener((Change<? extends TableColumn<S,?>> c) -> { 
    if (table.getSortOrder().size() != 2 || table.getSortOrder().get(1) != defaultSortColumn) { 
     table.getSortOrder().setAll(table.getSortOrder().get(0), defaultSortColumn); 
    } 
}); 

(. Очевидно, что заменить S и T по соответствующим видам)

+0

Это скомпилировано и выполняется, но это вызвало появление заголовков столбцов. Есть ли возможность устранить это явно? – Agricola

+0

@Agricola Смотрите обновление ... Не уверен, что это то, что вы ищете, но это может дать вам начало. Чувствует себя немного взломанным. –

Смежные вопросы