Mais uma vez JTable

Anexa seu o código todo dessa tela aqui, please.

Use a opção de attachments, que fica logo abaixo da caixa onde vc escreve o texto, e não a tag [code]

Segue os anexos, vlwzão pela força aí XD

Troque seu construtor para:

public VisualizarContatos() { gerenciaPessoas = new GerenciaPessoas(); initComponents(); }

Você precisa do gerenciaPessoas criado antes de chamar o initComponents.

puts que coisa de noob, sério, ateh fiquei envergonhado agora com esse erro bizarramente tosco!
Isso é o que da ficar muito tempo longe dos códigos, valeu mesmo, mais uma vez, Vinny!

guisantogui,

Faz um teste pra ver…Não tenho certeza que vai dar certo pois não testei aqui…

No seu método getValueAt coloque:

                   case 3: if(p.getClass() == PessoaFisica.class){
			        return ((PessoaFisica)p).getDatadenascimento();
		           }

Você ficou muito assustado com o TableModel, sendo que o erro estava em outro lugar.
Mas é sempre bom seguir a exception. Se ela diz que ocorre na linha 57 do initializeComponents, ocorre na linha 57 do initializeComponents, e não no TableModel.
Ele nem aparecia na sua exceção.

Foi só olhar o que tinha na linha e ver onde você estava inicializando as coisas que o erro apareceu.

vlw mesmo pela força, olha só tentei resolver aqui, mas to meio perdido com esse negócio de table model, tipo onde eu seto o meu array com o nome das colunas, pq agora ta aparecendo “A B C D E F G” como colunas.

Faltou sobrescrever o método getColumnName. Só depois dele a JTable vai saber que o nome do seu array é o que deve ser usado na sua JTable.

Era isso ai mesmo Vinny, mais uma vez valeu pelas milhares de dicas XD e Default Table Model NUNCA MAIS :smiley:

Sim.

Lembre-se que quando você tem um TableModel próprio, você não deve usar diretamente os métodos getValueAt e setValueAt. Deixe eles pro JTable. No seu caso, crie um método get, que já retorne um objeto de dentro do model, bonitinho.

Aí basta alterar esse objeto e chamar o método fireTableUpdated, na linha dele. :slight_smile:

Nunca mais você fará casts. :slight_smile:

E dê uma olhada no model do Mark. Faz montar tabelas ser parecer uma piada… e de bom gosto!

por hoje tenho uma última duvida.

Para mim implemtar um metodo de addRow no meu model eu devo chamar o fireTableRowsInserted? o mesmo para sitema para deletar e alterar? Caso sim, como eu iria chamar o metodo afinal a classe é abstrata e não posso instancia-lá.

Como eu procederia daí? :?

A classe é abstrata, mas os métodos fire não. É esse o serviço que o AbstractTableModel presta, e por isso é vantajoso usa-lo ao invés de implementar diretamente a interface TableModel. Eis um exemplo (esse método vai no seu model):

public void add(Pessoa p) { pessoas.add(p); fireTableRowsInserted(p.size()-1, p.size()-1); }

vlw pela dica de como implementar, por hoje vou dar uma pausa ai na programação, vou ver se amanha continuo. De qual quer forma brigadão mais uma vez pela força!