我想使用 TextField 中的字符串来过滤列表。我在 TextField 上使用 KeyReleased 事件来过滤每个键上的列表。当我输入一个单词时,下面的代码会过滤列表,但是当我按空格并开始输入另一个单词时,列表会变空。我对流有点陌生。我不知道我做错了什么。
private ObservableList<Products_Data> productList;
@FXML
private JFXTextField searchField;
@FXML
private TableView<Products_Data> productTable;
@FXML
void searchKeyReleased(KeyEvent event) {
String searchText = searchField.getText();
List<String> searchableWords = Arrays.asList(searchText.toLowerCase().trim().split("\\s+"));
List<Products_Data> filteredList = searchableWords.stream()
.flatMap(i ->productList.stream()
.filter(j -> j.getPartDesc().toLowerCase().contains(i)))
.collect(Collectors.toList());
ObservableList<Products_Data> productFilteredList = FXCollections.observableArrayList(filteredList);
productTable.setItems(productFilteredList);
}
----------
public class Products_Data {
private final StringProperty partDesc = new (this,"PartDesc",null);
public Products_Data() {}
public final StringProperty getPartDescProperty() {return partDesc;}
public final String getPartDesc(){return partDesc.get();}
public final void setPartDesc(String partDesc) {
getPartDescProperty().set(partDesc);
}
}
波斯汪
临摹微笑
相关分类