Я сделал это в 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
CookieMonster 26 Фев 2016 в 02:41

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 каждого элемента.

3
James_D 26 Фев 2016 в 01:56
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 
0
David Buck 9 Сен 2020 в 06:48