AbstractTableModel Duplicando valores

Toda vez que insiro um novo objeto na jtable , esse objeto é duplicado ! , alguem pode me ajudar ?

Posta seus códigos fontes.

Dica: Você não deveria adicionar nada na JTable, deveria simplesmente utilizar o TableModel para renderizar uma coleção de objetos.

public class TablePessoa extends AbstractTableModel {

private List<Pessoa> listaDePessoas = new ArrayList<>();
private String[] coluna = {"Nome", "Sobrenome", "Telefone", "Tipo"};

public void adicionarPessoa(Pessoa pessoa) {

    this.listaDePessoas.add(pessoaToUpperCase(pessoa));
    fireTableDataChanged();
}



public void editarPessoa(Pessoa pessoa, int rowIndex) {
    this.listaDePessoas.set(rowIndex, pessoa);
    fireTableDataChanged();
}

public void excluirPessoa(int rowIndex) {
    this.listaDePessoas.remove(rowIndex);
    fireTableDataChanged();
}

public Pessoa getPessoa(int rowIndex) {
    return this.listaDePessoas.get(rowIndex);
}

public Pessoa pessoaToUpperCase(Pessoa pessoa) {
    pessoa.setNome(pessoa.getNome().toUpperCase());
    pessoa.setSobrenome(pessoa.getSobrenome().toUpperCase());
    pessoa.setTipo(pessoa.getTipo().toUpperCase());
    return pessoa;
}

public boolean validarPessoa(Pessoa pessoa) {
    if (StringHelper.isEmpty(pessoa.getNome())) {
        return true;
    }
    if (StringHelper.isEmpty(pessoa.getSobrenome())) {
        return true;
    }
    pessoa.setNome(StringHelper.replaceAllSpecialCharacters(pessoa.getNome()));
    pessoa.setNome(StringHelper.spaceRemover(pessoa.getNome()));
    pessoa.setSobrenome(StringHelper.replaceAllSpecialCharacters(pessoa.getSobrenome()));
    pessoa.setSobrenome(StringHelper.spaceRemover(pessoa.getSobrenome()));

    return false;
}

@Override
public int getRowCount() {
    return this.listaDePessoas.size();
}

@Override
public int getColumnCount() {
    return this.coluna.length;
}

@Override
public Object getValueAt(int rowIndex, int columnIndex) {
    switch (columnIndex) {
        case 0:
            return this.listaDePessoas.get(rowIndex).getNome();
        case 1:
            return this.listaDePessoas.get(rowIndex).getSobrenome();
        case 2:
            return this.listaDePessoas.get(rowIndex).getTelefone();
        case 3:
            return this.listaDePessoas.get(rowIndex).getTipo();
        default:
            return this.listaDePessoas.get(rowIndex);
    }
}

@Override
public String getColumnName(int columnIndex) {
    return this.coluna[columnIndex];
}

}

Amigo, imagino que sua Abstract table model seja a que esta em anexo a uma pergunta no tópico anterior a esse… sendo assim tenho um chute do que pode estar acontecendo com vc…

Existem duas camadas na sua tabela, a view e o model, o model é representado pelo seu AbstractTableModel, e a view é o objeto da tabela propriamente dita, eu chuto que você esta adicionando uma linha diretamente na view e outra no model… O que eu aconselho a fazer pra evitar isso é inserir um objeto na lista do abstract > limpar toda a tabela > adicionar tudo novamente