在JavaFX中总结一个特定的TableView列/行

时间:2016-02-25 23:41:44

标签: javafx sum row tableview

我在java中完成了这个,我总结了价格列/行的值。但我想知道如何在JavaFX中执行此操作。

我想总结第1列中的所有内容并将其显示在inputField中,我用它在java中执行此操作但是如何在JavaFX中执行此操作?

tableview.getValueAt(i, 1).toString();

以下是我要做的事情:

int sum = 0;

for (int i = 0; i < tableview.getItems().size(); i++) {
    sum = sum + Integer.parseInt(tableview.getValueAt(i, 1).toString());
}

sumTextField.setText(String.valueOf(sum));

2 个答案:

答案 0 :(得分:2)

如果你真的有一个TableView<Integer>,这似乎就是你在评论中所说的那样,你就可以做到

TableView<Integer> table = ... ;

int total = 0 ;
for (Integer value : table.getItems()) {
    total = total + value;
}

或使用Java 8方法:

int total = table.getItems().stream().summingInt(Integer::intValue);

如果你有一个更标准的设置与你的表的实际模型类,那么你需要遍历项目列表并在每个项目上调用适当的get方法,然后将结果添加到总计。例如。

之类的东西
TableView<Item> table = ...;

int total = 0 ;
for (Item item : table.getItems()) {
    total = total + item.getPrice();
}

或者,再次使用Java 8风格

int total = table.getItems().stream().summingInt(Item::getPrice);

这两个假设您有一个Item类,其中getPrice()方法,并且相关列显示每个项目的price属性。

答案 1 :(得分:0)

public void totalCalculation (){

   double TotalPrice = 0.0;
    TotalPrice = Yourtable.getItems().stream().map(
            (item) -> item.getMontant()).reduce(TotalPrice, (accumulator, _item) -> accumulator + _item);

          TexfieldTotal.setText(String.valueOf(TotalPrice));
}
//getMontant is the getter of your column