That's what setValueAt() is for, it tells you that the JTable has caused the cell's value to be changed. Of course, it is possible that you have written some other code that is changing the data, but that would not have been a good design. The table model should own the data and control all access to it.