Olá eu tenho uma tabela onde forneço dados de Pessoa Fisica e Juridica, na Minha tabela eu listo todos com a Cliente que agrega PF e PJ, tenho uma Coluna chamado “Documento” que se for PF mostra Cpf e se for PJ mostra o Cnpj. Até tudo funciona tranquilo, mas quando faço alguma edição em um cadastro eu ainda não encontrei a solução de como alterar a Coluna Documento, caso altero o cnpj ou cpf. Alguem sabe como posso solucionar esse problema, segue o codigo abaixo.
--------------------------------Minha View onde recebo os dados alterados----------------
String id = tabela_cliente.getValueAt(tabela_cliente.getSelectedRow(), 0).toString();
if (tabela_cliente.getValueAt(tabela_cliente.getSelectedRow(), 4).toString().equals("Juridica")) {
fmlJuridica = new FormularioCadastroPessoaJuridica(new Frame(), rootPaneCheckingEnabled, id);
fmlJuridica.setVisible(true);
if (fmlJuridica.getExcluiu() == true) {
tableModel.removeRow(tabela_cliente.getSelectedRow());
tabela_cliente.updateUI();
}
if(fmlJuridica.getAlterou()== true && fmlJuridica.getExcluiu() == false){
ClientePessoaJuridica j = fmlJuridica.getcJuridica();
this.getListaClienteTodos().get(tabela_cliente.getSelectedRow()).setNome(j.getNome());
this.getListaClienteTodos().get(tabela_cliente.getSelectedRow()).setEmail(j.getEmail());
this.getListaClienteTodos().get(tabela_cliente.getSelectedRow()).setAtivo(j.getAtivo());
this.getListaClienteTodos().get(tabela_cliente.getSelectedRow()).setTelefone(j.getTelefone());
this.getListaClienteTodos().get(tabela_cliente.getSelectedRow()).setTipo(j.getTipo());
this.getListaClienteTodos().get(tabela_cliente.getSelectedRow()).setTipo(j.getTipo());
// falta editar na tabela cnpj
tabela_cliente.updateUI();
removeFocoTabela();
txt_buscar.requestFocus();
}
--------------------------------Minha Classe ClienteTable extends AbstractTableModel----------------
package br.com.marcus.model;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
public class ClienteTableModel extends AbstractTableModel {
private List<Cliente> dados = new ArrayList<>();
private String[] colunas = {"Id", "Nome", "Email", "Documento", "Tipo", "Telefone", "Ativo"};
public List<Cliente> getDados() {
return dados;
}
public void setDados(List<Cliente> dados) {
this.dados = dados;
}
@Override
public String getColumnName(int column) {
return colunas[column];
}
@Override
public int getRowCount() {
return getDados().size();
}
@Override
public int getColumnCount() {
return colunas.length;
}
@Override
public Object getValueAt(int linha, int coluna) {
try {
switch (coluna) {
case 0:
return getDados().get(linha).getId();
case 1:
return getDados().get(linha).getNome();
case 2:
return getDados().get(linha).getEmail();
case 3:
if (getDados().get(linha).getTipo().equals("F")) {
ClientePessoaFisica f = (ClientePessoaFisica) getDados().get(linha);
return f.getCpfFormatado();
}
if (getDados().get(linha).getTipo().equals("J")) {
ClientePessoaJuridica j = (ClientePessoaJuridica) getDados().get(linha);
return j.getCnpjFormatado();
}
case 4:
if (getDados().get(linha).getTipo().equals("F")) {
return "Fisica";
}
if (getDados().get(linha).getTipo().equals("J")) {
return "Juridica";
}
case 5:
return getDados().get(linha).getTelefoneFormatado();
case 6:
return getDados().get(linha).getAtivo();
}
} catch (ParseException ex) {
}
return null;
}
@Override
public void setValueAt(Object valor, int linha, int coluna) {
switch (coluna) {
case 0:
dados.get(linha).setId(Integer.parseInt(valor.toString()));
break;
case 1:
dados.get(linha).setNome((String) valor);
break;
case 2:
dados.get(linha).setEmail((String) valor);
break;
case 3:
if (getDados().get(linha).getTipo().equals("F")) {
ClientePessoaFisica f = (ClientePessoaFisica) getDados().get(linha);
f.setCpf((String) valor);
dados.get(linha).equals(f.getCpf());
}
if (getDados().get(linha).getTipo().equals("J")) {
ClientePessoaJuridica j = (ClientePessoaJuridica) getDados().get(linha);
j.setCnpj((String) valor);
dados.get(linha).equals(j.getCnpj());
}
break;
case 4:
dados.get(linha).setTipo((String) valor);
break;
case 5:
dados.get(linha).setTelefone((String) valor);
break;
case 6:
dados.get(linha).setAtivo((String) valor);
break;
}
this.fireTableRowsUpdated(linha, linha);
}
public void addRow(Cliente c) {
this.getDados().add(c);
this.fireTableDataChanged();
}
public void removeRow(int linha) {
this.dados.remove(linha);
this.fireTableRowsDeleted(linha, linha);
}}
Não sei o que estou passando batido.