JavaFX применяет определенный порядок к видимым столбцам TableView - PullRequest
0 голосов
/ 04 июня 2018

У меня есть таблица с кучей столбцов, некоторые видимые, но самые невидимые.Все невидимые столбцы отсортированы в алфавитном порядке с использованием компаратора, который игнорирует видимые столбцы, и все работает нормально (ура!).

Но я бы хотел видеть видимые столбцы в определенном порядке.Скажем, у меня есть видимые столбцы «боль», «усиление», «растяжение связки», «дождь» и «хромая», которые по умолчанию не упорядочены или не отсортированы каким-либо определенным образом, и я хочу, чтобы они были в определенном порядке «усиление», «дождь, растяжение связок, хромота и боль

Как мне этого добиться?

1 Ответ

0 голосов
/ 04 июня 2018

Вы можете поместить заказ в карту:

Map<String, Integer> columnOrder = new HashMap<>();
String[] order = new String[] {"gain", "rain", "sprain", "lame", "pain"};
for (int i = 0 ; i < order.length ; i++) {
    columnOrder.put(order[i], i);
}

А затем просто используйте API Comparator, чтобы предоставить компаратор для заказа.Мне кажется, это действительно не имеет значения, каков порядок невидимых столбцов, так как вы не можете их видеть, но вы можете сделать что-то вроде

Comparator<TableColumn<?, ?>> columnComparator = 
    Comparator.comparing(TableColumn<?,?>::isVisible).
    .thenComparing(col -> columnOrder.getOrDefault(col.getText().toLowerCase(), Integer.MAX_VALUE));

Значение по умолчанию MAX_VALUE просто гарантирует, чтолюбой столбец с текстом, которого нет на карте, идет в конце.

...