Я создаю систему для школьного проекта, и одна ее часть — это TableView
, который заполняется строками с использованием моего собственного класса данных InventoryData
со свойствами, соответствующими столбцам таблицы. Я хотел бы сделать ячейки в некоторых столбцах редактируемыми с помощью TextField
, чтобы при совершении редактирования оно обновляло соответствующее свойство объекта InventoryData
.
Я попытался установить TextFieldTableCell.forTableColumn()
в качестве фабрики ячеек столбцов. Хотя теперь, после фиксации редактирования, текст в ячейке изменится, я не думаю, что это меняет свойство в объекте InventoryData
. Причина, по которой я так думаю, заключается в том, что когда я пытаюсь снова отредактировать эту ячейку (после того, как она уже была отредактирована один раз), TextField
показывает прежнее значение (до первого редактирования).
Я сделал что-то не так, или это нормальное поведение, и я должен сам выполнять коммиты?
Вот код для InventoryData
:
package UILayer.TableData;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
import ModelLayer.Product;
public class InventoryData {
// From Product
private Product productObj;
private SimpleIntegerProperty id;
private SimpleStringProperty name;
// Constructor - converts Product obj into InventoryData
public InventoryData(Product product)
{
this.productObj = product;
this.id = new SimpleIntegerProperty(product.getId());
this.name = new SimpleStringProperty(product.getName())
}
// GET & SET
public Product getProduct()
{
return productObj;
}
public int getId() {
return id.get();
}
public void setId(int id) {
this.id.set(id);
}
public String getName() {
return name.get();
}
public void setName(String name) {
this.name.set(name);
productObj.setName(name);
System.out.println(productObj.getName());
}
}