【问题标题】:How to filter data in tableview in Javafx如何在 Javafx 中的 tableview 中过滤数据
【发布时间】: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 没有变化

标签: java javafx tableview


【解决方案1】:

好的,谢谢大家,我发现了问题

问题不在于函数本身,而是我在将任何数据放入 tableview 之前运行此方法。由于我没有添加任何异常处理事件,我的代码正在抛出 NullPointerError。

感谢大家的帮助

【讨论】:

    猜你喜欢
    • 2018-09-28
    • 2017-08-13
    • 1970-01-01
    • 2019-02-10
    • 2016-11-24
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    • 2020-11-07
    相关资源
    最近更新 更多