У меня есть форма с 4 текстовыми полями, которые я пытаюсь отслеживать с помощью ObservableList с 5 столбцами. TableView имеет дополнительный столбец для хранения вычисляемого значения (5-й столбец в моем ObservableList).
Данные выгружаются из 4 текстовых полей, но вычисляемый столбец остается пустым. Я предполагаю, что это проблема с моими геттерами и сеттерами, потому что значение вычисляется до того, как я передам его в свою модель данных, И я только что протестировал модель данных, и она ПОЛУЧАЕТ значение (передается как параметр).
Чтобы не помещать здесь посторонний код, я думаю, что это соответствующие части:
// Это (часть) моей модели данных
public static class ItemSale {
private ItemSale (Double barC, String itemm, Double pricee,
Integer quant, Double totsP) {
this.barCode = new SimpleDoubleProperty(barC);
this.item = new SimpleStringProperty(itemm);
this.price = new SimpleDoubleProperty(pricee);
this.quantity = new SimpleIntegerProperty(quant);
this.rowPrice = new SimpleDoubleProperty(totsP);
System.out.println(totsP); // this (also) prints the correct value to the screen
// цена * количество = rowPrice, расчетное значение, которое не отображается позже
// геттер и сеттер для количества (работает, это текстовое поле в моей форме)
public SimpleIntegerProperty getQuantity() {
return quantity;
}
public void setQuantity(Integer quant) {
quantity.set(quant);
}
// геттер и сеттер для rowPrice (не работает, вычисляется, см. ниже)
public SimpleDoubleProperty getRowPrice(Double totsP) {
return rowPrice;
}
public void setRowPrice(Double totsP) {
rowPrice.set(totsP);
}
// в обработчике действия кнопки «Добавить» у меня есть это:
Double rowPP;
rowPP = qua * pr; //qua = variable for quantity, pr = variable for price
System.out.println(rowPP); //prints to screen fine
data.add(new ItemSale(
bcode,
item.getText(),
pr,
qua,
rowPP
));