Dúvida ao carregar JTable com AbstractTableModel

3 respostas
Marcos_Kako

Olá Pessoal!
Estou iniciando em java, talvez seja simples resolver mas preciso da ajuda dos universitários!
Minha dúvida é a seguinte:
Tenho uma classe AbstractTabelModel (ContatoTableModel) e gostaria de carregar um arquivo texto na JTabel (tblAgenda), porém está carregando a quantidade correta de linhas mas repetindo apenas o primeiro registro na JTable.

<strong>Abaixo o método para importar o arquivo texto:</strong>

public void importarArquivo() {

try {

BufferedReader reader = null;

try {

reader = new BufferedReader(new FileReader(arquivo.txt));

String line = reader.readLine();

if (line == null) {

throw new RuntimeException (O arquivo vazio!);

}

String contato[] = line.split(",");

while (line != null) {

Contato c = new Contato(); // Classe Contato

c.setId((contato[contato.length - 5]));

c.setNome(contato[contato.length - 4]);

c.setEmpresa(contato[contato.length - 3]);

c.setTelefone(contato[contato.length - 2]);

c.setEmail(contato[contato.length - 1]);

tableModel.adicionarLinha©; // Classe ContatoTableModel (AbstractTableModel)

line = reader.readLine();

}

} finally {

if (reader != null) {

reader.close();

}

}

} catch (Exception e) {

JOptionPane.showMessageDialog(this, e.getMessage());

}

}
<strong>Abaixo o método para adicionar linhas na JTable:</strong>

public void adicionarLinha(Contato c) {

this.dados.add©;

this.fireTableDataChanged();

}

Abaixo o arquivo texto:
1,Marcos Alvin de Campos,MAC Serviços TI,([telefone removido],[email removido]
2,Paulo Edilson dos Santosos,Pedreiro autonomo,([telefone removido],[email removido]
3,José Carlos da Silva,Construtora Silva Ltda,([telefone removido],[email removido]
4,Eliana Doris,Tricot e Croche,([telefone removido],[email removido]

E o resultado na JTable:
ID Nome Empresa Telefone E-mail
1 Marcos Alvin de Campos MAC Serviços TI ([telefone removido] [email removido]
1 Marcos Alvin de Campos MAC Serviços TI ([telefone removido] [email removido]
1 Marcos Alvin de Campos MAC Serviços TI ([telefone removido] [email removido]
1 Marcos Alvin de Campos MAC Serviços TI ([telefone removido] [email removido]

Desde já agradeço pela atenção!

3 Respostas

F

Implementa como você desejar:

Marcos_Kako

Obrigado Fabio pela atenção!
Olhei o seu vídeo e minha AbstractTableModel está praticamente igual.
Encontrei o problema, havia uma String fora do while:

while (line != null) {

<strong>String contato[ ] = line.split(",");</strong>

Contato c = new Contato(); // Classe Contato

c.setId((contato[contato.length - 5]));

c.setNome(contato[contato.length - 4]);

c.setEmpresa(contato[contato.length - 3]);

c.setTelefone(contato[contato.length - 2]);

c.setEmail(contato[contato.length - 1]);

tableModel.adicionarLinha©; // Classe ContatoTableModel (AbstractTableModel)

line = reader.readLine();

}

Abraços!

Jederson_Andre

Bom… eu utilizo o DefaultTableModel para preencher tabelas, alguns desenvolvedores ja me falaram que não é a maneira mais correta, ainda nao sei o porquê.

Criado 22 de setembro de 2017
Ultima resposta 23 de set. de 2017
Respostas 3
Participantes 3