创建搜索TextField字段以在javafx tableview中搜索

假设我有一个包含许多列的TableView ,我想添加一个搜索字段来过滤符合特定条件的行,按名称搜索作为示例。 谢谢

假设你有一个名为myTableTableView填充了myObject Object 。 创建一个TextField,在这种情况下我将其命名为filterField,所以这是一个简单的实现。

 FilteredList filteredData = new FilteredList<>(data, p -> true); // 2. Set the filter Predicate whenever the filter changes. filterField.textProperty().addListener((observable, oldValue, newValue) -> { filteredData.setPredicate(myObject -> { // If filter text is empty, display all persons. if (newValue == null || newValue.isEmpty()) { return true; } // Compare first name and last name field in your object with filter. String lowerCaseFilter = newValue.toLowerCase(); if (String.valueOf(myObject.getFirstName()).toLowerCase().contains(lowerCaseFilter)) { return true; // Filter matches first name. } else if (String.valueOf(myObject.getLastName()).toLowerCase().contains(lowerCaseFilter)) { return true; // Filter matches last name. } return false; // Does not match. }); }); // 3. Wrap the FilteredList in a SortedList. SortedList sortedData = new SortedList<>(filteredData); // 4. Bind the SortedList comparator to the TableView comparator. sortedData.comparatorProperty().bind(myTable.comparatorProperty()); // 5. Add sorted (and filtered) data to the table. myTable.setItems(sortedData);