【发布时间】:2021-08-23 02:40:59
【问题描述】:
我在 java fx 中有一个 tableview,它显示不同类型的数据,例如 String 和 Integer。我想要一个数据过滤器,以便它自动在 table view 中显示数据。我怎样才能做到这一点?目前我正在使用一个函数,但它不起作用。注意:“pers”是我正在使用的类的对象
void SearchUser(){
FilteredList<Issue> filteredData=new FilteredList<>(Ilist,b->true);
filterField.textProperty().addListener((observable, oldValue, newValue) -> {
filteredData.setPredicate(pers->{
if(newValue==null||newValue.isEmpty()){
return true;
}
String lowerCaseFilter=newValue.toLowerCase();
if(pers.getCreator().toLowerCase().indexOf(lowerCaseFilter)!=-1){
return true;
}
else if(pers.getIssueTitle().toLowerCase().indexOf(lowerCaseFilter)!=-1){
return true;
}
else if(String.valueOf(pers.getIssueNo()).indexOf(lowerCaseFilter)!=-1){
return true;
} else if(pers.getStatus().toLowerCase().indexOf(lowerCaseFilter)!=-1){
return true;
}
else if(pers.getAssignee().toLowerCase().indexOf(lowerCaseFilter)!=-1){
return true;
}
else if(pers.getTime().toLowerCase().indexOf(lowerCaseFilter)!=-1){
return true;
}
else if(String.valueOf(pers.getPriority()).indexOf(lowerCaseFilter)!=-1){
return true;
}
else if(pers.getTag().toLowerCase().indexOf(lowerCaseFilter)!=-1){
return true;
}
else{
return false;
}
});
});
SortedList<Issue> sortedData=new SortedList<>(filteredData);
sortedData.comparatorProperty().bind(IssueTable.comparatorProperty());
IssueTable.setItems(sortedData);
}
【问题讨论】:
-
使用
if (pers.getCreator().toLowerCase().contains(lowerCaseFilter))会使代码更短更轻 -
minimal reproducible example 请遵守 java 命名约定
-
到底是什么问题?换句话说,它在什么方面不起作用?
-
我的意思是当我在文本字段中输入时,tableview 没有变化