class Editor extends DefaultCellEditor{ Object oldValue; int row; int column; public Editor(JTextField textField) { super(textField); addCellEditorListener(new CellEditorListener() { @Override public void editingStopped(ChangeEvent e) { String newValue = String.valueOf(((Editor)e.getSource()).getCellEditorValue()); Object[] undoParameters = {oldValue,row,column}; Object[] redoParameters = {newValue,row,column}; actionManager.addAction("setCellValue", undoParameters, redoParameters); } @Override public void editingCanceled(ChangeEvent e) { } }); } @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { oldValue = value; if (value == null) oldValue = ""; this.row = row; this.column = column; return super.getTableCellEditorComponent(table, value, isSelected, row, column); } }