Problema ao editar jtable

Bom dia, estou tentando editar uma célula de uma coluna, mas ao editar com o valor novo ele retorna para o valor antigo. estou usando as seguintes classes:

classe TableModel:
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Model;

import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;

/**
 *
 * @author Giovanni.Chrispin
 */
public class TableModel extends AbstractTableModel{
    private ArrayList linhas = null;
    private String[] colunas = null;
    
    public TableModel(ArrayList lin, String[] col){
        setLinhas(lin);
        setColunas(col);
    }
        public ArrayList getLinhas(){
            return linhas;
        }
        
        public void setLinhas (ArrayList dados){
            linhas = dados;
        }
        
        public String[] getColunas(){
            return colunas;
        }
        
        public void setColunas (String[] nomes){
            colunas = nomes;
        }
        
        public int getColumnCount(){
            return colunas.length;
        }
        
        public int getRowCount(){
            return linhas.size();
        }
        
        public String getColumnName(int numCol){
            return colunas[numCol];
        }
        
        public Object getValueAt(int numLin, int numCol){
            Object[] linha = (Object[])getLinhas().get(numLin);
            return linha[numCol];
        }
        
        public boolean isCellEditable(int numLin, int numCol){
            return true;
        }
        
}

Metodo para gerar parcelas e preencher jtable:

public void preencherTabela() {

        ArrayList dados = new ArrayList();
        String[] colunas = new String[]{"ID", "DATA", "VALOR"};

        String data = jFormattedTextField_data.getText();
        String dia, mes, ano;
        dia = "" + data.charAt(0) + data.charAt(1) + "/";
        mes = "" + data.charAt(3) + data.charAt(4);
        ano = "/" + data.charAt(6) + data.charAt(7) + data.charAt(8) + data.charAt(9);
        int anoInt = Integer.parseInt("" + data.charAt(6) + data.charAt(7) + data.charAt(8) + data.charAt(9));
        int mesInt = Integer.parseInt(mes);

        while (i <= quantidadeParcela) {
            if (mesInt < 10) {
                dados.add(new Object[]{i, dia + "0" + mesInt + "/" + anoInt, nf.format(valorParcela)});
            } else {
                dados.add(new Object[]{i, dia + mesInt + "/" + anoInt, nf.format(valorParcela)});
            }
            mesInt++;

            if (mesInt > 12) {
                anoInt++;
                mesInt = 1;
            }
            i++;
            cont++;
        }

        TableModel modelo = new TableModel(dados, colunas);
        jTable_parcelas.setModel(modelo);
        jTable_parcelas.getColumnModel().getColumn(0).setPreferredWidth(50);
        jTable_parcelas.getColumnModel().getColumn(0).setResizable(false);
        jTable_parcelas.getColumnModel().getColumn(1).setPreferredWidth(200);
        jTable_parcelas.getColumnModel().getColumn(1).setResizable(false);
        jTable_parcelas.getColumnModel().getColumn(2).setPreferredWidth(180);
        jTable_parcelas.getColumnModel().getColumn(2).setResizable(false);

        jTable_parcelas.getTableHeader().setReorderingAllowed(false);
        jTable_parcelas.setAutoResizeMode(jTable_parcelas.AUTO_RESIZE_OFF);

        jTable_parcelas.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    }

Ola
precisa implementar o método abaixo no seu TableModel:

    @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {

    }

Ok, Depois como faço para poder usa-lo?

Vc n chama ele diretamente. A JTable chama ele.
Vc só precisa ter ali implementado sua logica para salvar os novos valores, do contrário se perdem.

Pelo que vi, seus dados ficam na lista LINHAS. No metodo getValueAt é retornado o valor desta lista. Se no setValueAt vc não alterar o respectivo valor nesta lista, logo sempre mostrará o valor antigo.

Para que funcione é muito parecido com o getValueAt. Só precisa pegar o objeto referente a linha e a coluna, mas ao invés de retornar, vc altera o valor na lista.

Entendi, se tiver algum exemplo para me passar para ficar mais claro eu agradeceria, como sou novo na área de programação ainda estou aprendendo. Mas vou tentar fazer algo aqui, obrigado.

Tentei fazer o seguinte no forma da minha tabela:

'private void jTable_parcelasMouseClicked(java.awt.event.MouseEvent evt) {
String data = (String) jTable_parcelas.getValueAt(jTable_parcelas.getSelectedRow(), 1);
jTable_parcelas.setValueAt(data, jTable_parcelas.getSelectedRow(), jTable_parcelas.getSelectedColumn());
} ’

metodo no tableModel:

‘public void setValueAt(Object aValue, int numLin, int numCol) {
Object[] linha = (Object[])getLinhas().get(numLin);

}’

Alguém para ajudar?