【发布时间】:2019-02-10 08:44:12
【问题描述】:
我想编写一个方法,我传递一个文本字段 (filterField)、来自 tableview (data) 和 tableview (table) 的数据,以便过滤所有表数据,检查每次在文本字段中释放一个键时,如果键入的字符串包含在表格的任何单元格中。
此方法是通用的,用于不同类型的具有不同列标题的表。
为此,我使用以下代码:
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 Sorting and Filtering
我还需要它返回不依赖于小写或大写值的值。
【问题讨论】: