当前位置: 首页 > 知识库问答 >
问题:

如何在Javafx中过滤tableview中的数据

禄奇希
2023-03-14

我在java fx中有一个tableview,它显示不同类型的数据,如字符串和整数。我想有一个数据过滤器,这样它就可以自动在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);

}

共有1个答案

米飞龙
2023-03-14

好的,谢谢伙计们,因为我发现了问题

问题不是函数本身,而是我在将数据放入TableView之前运行了这个方法,因为我没有添加任何异常处理事件,所以我的代码抛出了NullPoInterError。

谢谢大家的帮助

 类似资料:
  • 我需要在javafx tableview中实现一个拥有庞大数据(大约10万)的过滤器, 我试过这个教程。它可以工作,但与swing排序和过滤相比,过滤速度非常慢。 谁能帮我提速吗。 现在正在发生的事情是,当我键入textproperty change fire up和filterdata时,但速度很慢,我需要一些东西来显示筛选结果,并在swing中快速键入。 提前谢谢。 p、 我也看过这个。

  • 下面的代码被修改为不包括我的数据库中的任何数据。 然后将其传递到initialize方法中,在该方法中进行表的实际填充。 顺便说一下,Users类如下所示: 该程序按预期工作,我可以看到与图像和VBox的详细信息的表格。 现在我想添加一个TextField来过滤表,过滤参数是标签中的文本。 我明白了,我需要将ObservableList放入FilteredList中,然后放入SortedList中

  • 我在论坛上发现了这样的sollution,正如我所说的,它只检测添加/删除对象

  • 我在javaFX开发应用程序。我想在桌面上显示json的反应。我不知道怎么做 我的档案如下: 项目。fxml 项目控制器 我在中得到json响应,我想在表视图中显示它。 我不知道如何将json绑定到表视图。 我可以将json转换为数组。 但是,tableview的方法要求使用观测列表。 因此,任何建议和例子都将受到高度重视。

  • 我在许多地方看到了关于如何使用代码获取表头的示例 像这里:如何防止TableView从做TableColsta重新排序在javaFX 8? 但是这个代码为我返回。 如何到达然后?