Jtable...cellEditor

Olá. Estou tentando implementar um CellEditor…Acontece que sempre que edito um valor na celula…ao passar
para a linha debaixo, ele ja vem com o valor antigo e sobrescreve. Acho que nao entendi muito bem como
funciona essa classe. Se alguem puder responder como faço para implementar isso corretamente agradeço muito!

Código:

public Component getTableCellEditorComponent(JTable table,
				Object value, boolean isSelected, int row, int column) {
				
				IntegerDocTest document = getDocument();
				JTextField textField = getTextField();
				
				document.setMaxValue(56);
				
				if(stopCellEditing()){
					
					System.out.println(value);
					
					textField.setText(String.valueOf(value));
					textField.selectAll();
					
				}
				return textField;
		}
		
		@Override
		public boolean stopCellEditing() {
			return super.stopCellEditing();
		}
		
		public JTextField getTextField() {
			if (textField == null) {
				textField = new JTextField();
				textField.setBorder(new LineBorder(Color.BLACK));
				textField.setDocument(getDocument());
				textField.setHorizontalAlignment(JTextField.RIGHT);
			}
			return textField;
		}

		public void setTextField(JTextField textField) {
			this.textField = textField;
		}

		public IntegerDocTest getDocument() {
			if (document == null) {
				document = new IntegerDocTest();
			}
			return document;
		}

		public void setDocument(IntegerDocTest document) {
			this.document = document;
		}
	}

Meu Model:

[code]
public AbstractTableModel getModelIcms() {

	if (modelIcms == null) {

		modelIcms = new AbstractTableModel() {

			public final String[] columnNames = {"Alíquota", "Código ICMS ECF"};

			/*
			 * Default Constructor
			 */
			
			@Override
			public boolean isCellEditable(int rowIndex, int columnIndex) {
				if(rowIndex > -1 && rowIndex <= getColumnCount()){
					return true;
				}else{
					return false;
				}
			}
			
			public int getColumnCount() {
				return columnNames.length;
			}

			public String getColumnName(int column) {
				return columnNames[column];
			}
			
			public int getRowCount() {
				/*List<Cadidecf> cadidecfList = getController().getCadidecflist();
				return cadidecfList.size();*/
				return 2;
			}

			public Object getValueAt(int row, int column) {
				//List<Cadidecf> cadidecfList = getController().getCadidecflist();
				//Cadidecf cadidecf = cadidecfList.get(row);
				switch (column) {
				case 0: {
					
					CellEditor cellEditor = getIcmsGrid().getColumnModel().getColumn(column).getCellEditor();
					return  cellEditor.getCellEditorValue();
				}
				case 1: {
					
				}
				}
				return null;
			}
		};
	}

	return modelIcms;
}[/code]

Alguem da um help ai =)