Я хочу закодировать метод, в котором я передаю текстовое поле (filterField), данные из таблицы (данные) и таблицы (таблица), чтобы отфильтровать все данные таблицы, проверяя каждый раз, когда ключ освобождается в текстовом поле, если введенная строка содержится в любой ячейке таблицы.
Этот метод должен быть универсальным и использоваться для разных типов таблиц с разными заголовками столбцов.
Для этого я использую следующий код:
public void addTextFilter(ObservableList<List<Object>> allData,
JFXTextField filterField, TableView<List<Object>> table) {
FilteredList<List<Object>> filteredData = new FilteredList<>(allData, p -> true);
filterField.setOnKeyReleased(e ->
{
filteredData.setPredicate(p ->
{
if (filterField.getText() == null || filterField.getText().isEmpty()){
return true;
}else {
return p.contains(filterField.getText());
}
});
});
SortedList<List<Object>> sortedData = new SortedList<>(filteredData);
sortedData.comparatorProperty().bind(table.comparatorProperty());
table.setItems(sortedData);
}
Этот код возвращает значения только тогда, когда строка в текстовом поле точно соответствует значению любой ячейки в таблице.
Мне нужно было бы вернуть любую ячейку таблицы, которая содержит напечатанную в ней строку при вводе, даже если эта ячейка содержит больше символов. Нечто похожее на это: JavaFX 8 TableView Сортировка и фильтрация
Мне также нужно, чтобы он возвращал значения, не зависящие от строчных или прописных значений.