If you multiply 5 * 5 comes out 25, when editing 6 * 5 it still goes 25.
Here are similar questions.
https://stackoverflow.com/questions/7868188/javafx-2-save-edit-in-tablecell
View
public class Earnings implements List3{ private ObservableList<Person> personList = FXCollections.observableArrayList(); private float a = 5; private float b = 5; private float c = a * b; @Override public void add(Person person) { personList.add( person ); } public ObservableList<Person> getPersonList(){ return personList; } public void print (){ int number = 0; System.out.println(); for (Person person:personList){ number++; System.out.println(number+")id ="+ person.getId()+"; position = "+person.getPosition()+"; salary = "+person.getSalary()+" prize = "+person.getPrize()+"; earnings =" + person.getEarnings()); } } public void fillEarningsData (){ personList.add( new Person( 1,"accountant",a,b,c ) ); } } Personcontroller
public class PersonController { private Earnings personImpl = new Earnings(); //data bundle @FXML private TableView tablePerson; @FXML private TableColumn<Person, Integer> columnId; @FXML private TableColumn<Person, Integer> columnPosition; @FXML private TableColumn<Person, Float> columnSalary; @FXML private TableColumn<Person, Float> columnPrize; @FXML private TableColumn<Person, Float> columnEarnings; @FXML private void initialize (){ columnId.setCellValueFactory(new PropertyValueFactory<Person, Integer>("id")); columnPosition.setCellValueFactory(new PropertyValueFactory<Person, Integer>("position")); columnSalary.setCellValueFactory(new PropertyValueFactory<Person, Float>("salary")); columnPrize.setCellValueFactory(new PropertyValueFactory<Person, Float>("prize")); columnEarnings.setCellValueFactory(new PropertyValueFactory<Person, Float>("earnings")); personImpl.fillEarningsData(); tablePerson.setItems(personImpl.getPersonList()); // the mistake can here columnSalary.setCellFactory(TextFieldTableCell.forTableColumn(new FloatStringConverter())); columnSalary.setOnEditCommit( new EventHandler<TableColumn.CellEditEvent<Person, Float>>() { @Override public void handle(TableColumn.CellEditEvent<Person, Float> t) { t.getTablePosition().getRow().setSalary( t.getNewValue() ); } } ); columnPrize.setCellFactory(TextFieldTableCell.forTableColumn(new FloatStringConverter())); columnPrize.setOnEditCommit( new EventHandler<TableColumn.CellEditEvent<Person, Float>>() { @Override public void handle(TableColumn.CellEditEvent<Person, Float> t) { t.getTablePosition().getRow().setPrize( t.getNewValue() ); } } ); columnEarnings.setCellFactory(TextFieldTableCell.forTableColumn(new FloatStringConverter())); columnEarnings.setOnEditCommit( new EventHandler<TableColumn.CellEditEvent<Person, Float>>() { @Override public void handle(TableColumn.CellEditEvent<Person, Float> t) { t.getTablePosition().getRow().setEarnings( t.getNewValue() ); } } ); } } Person
public class Person { private int id; private String position; private float salary; private float prize; private float earnings; // Person public Person() { } public Person(int id, String position, float salary, float prize, float earnings) { this.id = id; this.position = position; this.salary = salary; this.prize = prize; this.earnings = earnings; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getPosition() { return position; } public void setPosition(String position) { this.position = position; } public float getSalary() { return salary; } public void setSalary(float salary) { this.salary = salary; } public float getPrize() { return prize; } public void setPrize(float prize) { this.prize = prize; } public float getEarnings() { return earnings; } public void setEarnings(float earnings) { this.earnings = earnings; } } 