Javafx tableview从筛选列表中获取值

时间:2016-07-21 07:13:15

标签: javafx tableview

首先我创建了表格。并增加了价值。然后将监听器添加到textfield2进行搜索(过滤)。我有一个getStatistics函数,用于获取一列中的值的总和。但是在过滤数据后它没有工作。过滤后如何获得值的总和?

ObservableList<CurrentreservsController.userdata> data;
   data = FXCollections.observableArrayList();
.......
.......

      FilteredList<userdata> filt = new FilteredList<>(data, p ->true);
                textfield2.textProperty().addListener((observable, oldValue, newValue) -> {
                filt.setPredicate(userdata -> {
                    if (newValue == null || newValue.isEmpty()) {
                        return true;
                    }  
                    String lowerCaseFilter = newValue.toLowerCase(); 
               if (userdata.otag.toString().toLowerCase().contains(lowerCaseFilter)) {
                        return true; // Filter matches first name.
                    } else if (userdata.cm.toString().toLowerCase().contains(lowerCaseFilter)) {
                        return true; // Filter matches last name.
                    }
                    return false; // Does not match.
                });
            });
             SortedList<userdata> sortedData = new SortedList<>(filt);
            sortedData.comparatorProperty().bind(tablesettings.comparatorProperty());
            tablesettings.setItems(sortedData);
             seartol=0; 
            getStatistics();

getStatistic函数

 private void getStatistics() {
          seartol=0; 
      for (userdata product : data) {
       seartol = seartol + Integer.parseInt(product.tol.getValue().toString());
       }
       label1.setText("Total sum: "+seartol);
    }

1 个答案:

答案 0 :(得分:0)

您只需根据已过滤的列表而非源列表计算统计信息。

 private void getStatistics() {
     seartol=0; 
     for (userdata product : filt ) {
       seartol = seartol + Integer.parseInt(product.tol.getValue().toString());
     }
       label1.setText("Total sum: "+seartol);
 }