我正在嘗試將我的列表視圖轉換為過濾后的列表視圖。我找到了關于堆棧溢出的說明,但是線程被鎖定了,所以我不能評論它來問這個問題。出于某種原因,當我鍵入表達式時:filteredOblist.setPredicate(s -> s.contains(filterUID));s.contains(filteredUID)); 由于錯誤而無法工作錯誤:(65、51)java:找不到符號符號:方法包含(java.lang.String)位置:Controllers.ModelTable類型的變量s完整代碼: public void initialize(URL location, ResourceBundle resources) { filter_uid.textProperty().addListener(obs ->{ String filterUID = filter_uid.getText(); if (filterUID == null || filterUID.length() == 0){ filteredOblist.setPredicate(s -> true); }else { filteredOblist.setPredicate(s -> s.contains(filterUID)); } });定義:@FXML public TableView<ModelTable> taskManagerView; @FXML public TableColumn<ModelTable, String> col_UID; @FXML public TableColumn<ModelTable, String> col_Date; @FXML public TableColumn<ModelTable, String> col_CreatedBy; @FXML public TableColumn<ModelTable, String> col_Category; @FXML public TableColumn<ModelTable, String> col_Task; @FXML TextField filter_uid; @FXML TextField filter_created; @FXML ChoiceBox filtered_choice; @FXML DatePicker filter_date; ObservableList<ModelTable> oblist = FXCollections.observableArrayList(); FilteredList<ModelTable> filteredOblist = new FilteredList<>(oblist, s -> true);謝謝
1 回答

斯蒂芬大帝
TA貢獻1827條經驗 獲得超8個贊
為此,您的ModelTable班級應該有contains這樣的方法,
public boolean contains(String uuid) {
return UID.equals(uuid);
}
相反,如果您需要如評論中所述采用不同的過濾策略,我會將該責任移交給客戶,只需將其從ModelTable課堂上移除即可。只需通過根據需要訪問不同的字段來編寫謂詞ModelTable。這是從類中刪除contains方法后兩個謂詞的樣子。ModelTable
filteredOblist.setPredicate(s -> s.UID.equals(filterUID));
filteredOblist.setPredicate(s -> s.CreatedBy.startsWith(filterCreated));
底線是您的客戶端必須提供過濾策略,因為它會根據上下文而變化。
添加回答
舉報
0/150
提交
取消