简体   繁体   English

如何在 Javafx 的 tableview 中过滤数据

[英]How to filter data in tableview in Javafx

i have a tableview in java fx which displays different types of data such as String and Integer.I want to have a data filter so that it automatically displays the data in table view.How can i achieve this?Currently i am using a function but it is not working.NOTE:"pers" is an object of the class that i am using我在 java fx 中有一个表格视图,它显示不同类型的数据,例如字符串和 Integer。我想要一个数据过滤器,以便它自动在表格视图中显示数据。我怎样才能做到这一点?目前我使用的是 ZC1C425264C178A它不起作用。注意:“pers”是我正在使用的 class 的 object

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);

}

Ok thanks guys as i figured out the problem好的,谢谢大家,因为我发现了问题

the issue was not with the function itself but the fact that i was running this method before putting any data in to the tableview.Since i did not add any exception handling event,my code was throwing NullPointerError.问题不在于 function 本身,而是我在将任何数据放入 tableview 之前运行此方法的事实。由于我没有添加任何异常处理事件,我的代码抛出 NullPointerError。

Thanks for everyone's help感谢大家的帮助

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM