Глядя на код, я сильно подозреваю, что проблема заключается в перерывах, они превращают ваш цикл for в установку if-else.Они являются причиной того, что вы смотрите только на первую строку, я подозреваю, что вы на самом деле хотели использовать продолжения, а не разрывы (за исключением случая, когда таблица пуста).
Предполагая, что содержимое блоков правильно, я думаю, что это должно делать то, что вы после:
if (model.getRowCount() == 0 ) {
//if table is empty, just add
addSelectedItem[1] = "100";
model.addRow(new String[]{addSelectedItem[0], addSelectedItem[1], addSelectedItem[2], addSelectedItem[3]});
//main.tillPanel.tblTillSale.getModel().setValueAt(selectedItem, tillSelectedRow, tillSelectedRow);
main.tillPanel.lblTotPrice.setText("100");
}else {
//table not empty, look for duplicates first
boolean found = false;
for (int rowCount = 0 ; rowCount < model.getRowCount(); rowCount++) {
// look for duplicate row
if(addSelectedItem[0].equals(main.tillPanel.tblTillSale.getValueAt(rowCount, 0))) {
//found the item : increase total column of existing row
found = true;
main.tillPanel.lblTotPrice.setText("200");
int currentValue = Integer.parseInt(addSelectedItem[1].trim());
addSelectedItem[1] = "200";
model.setValueAt(addSelectedItem[1], rowCount, 1);
}else {//not this row
}
}
if( found == false) {
//checked all rows without finding it : add this selection
addSelectedItem[1] = "300";
model.addRow(new String[]{addSelectedItem[0], addSelectedItem[1], addSelectedItem[2], addSelectedItem[3]});
main.tillPanel.lblTotPrice.setText("300");
} else {
}
}
Также (без знания контекста), глядя на строки:
int currentValue = Integer.parseInt (addSelectedItem [1] .trim ());addSelectedItem [1] = "200";
это должно быть:
int currentValue = Integer.parseInt (addSelectedItem [1] .trim ());addSelectedItem [1] = "" + (currentValue + 100);
?
В данный момент проанализированное вами значение отбрасывается в конце блока.
Также обратите внимание:
public static int parseInt (String s) throwsNumberFormatException
Вам нужно будет включить блоки try / catch при любом разборе