Problemas no entendimento do DefaultTableModel, em uma jTable no Java Swing

3 respostas
javajtableswing
R

Gostaria de entender qual a diferença primordial entre um DefaultTableModel e o getModel de uma jTable qualquer. Para melhor explicar, vou dar um exemplo:

Object[] objetoQualquer = {1, "exemplo"};
        
        //parte 1:
        JTable tabela = new JTable();
        tabela.getModel();
        
        //parte2:
        DefaultTableModel modeloDefault = new DefaultTableModel();
        modelDefault.addRow(objetoQualquer);

Usando o DefaultTableModel, consigo adicionar ao modeloDefault dados em formato de objeto, com o método addRow, por exemplo. Mas, quando uso o getModel (que em teoria me retorna também um modelo de tabela), não tenho acesso a esse método para adicionar linhas inteiras. Fico me perguntando o porquê disso, já que, ao meu ver, tanto o modeloDefault quanto o getModel são modelos de tabelas.

Dessa forma que está, na maioria dos casos em que não quero criar meu próprio TableModel, acabo usando um cast para “forçar” o uso do DefaultTableModel:

this.modelDefault = (DefaultTableModel) this.jTableTabela.getModel();

Se alguém puder me explicar, agradeço.

3 Respostas

L

Isso pq o método getModel devolve a interface TableModel, e realmente essa interface não possui o método addRow, que é da classe DefaultTableModel.

R

É correto utilizar o cast para ter acesso aos métodos do DefaultTableModel, ou existe uma maneira melhor de preencher uma JTable linha a linha?

L

É correto sim.

O que não é recomendado é usar a DefaultTableModel. O melhor seria vc criar sua própria classe à partir da AbstractTableModel, pois vai facilitar muito a sua vida.

Tem um post com um exemplo de como usar: DefaultTableModel model - Mostrar valores - #2 por Lucas_Camara, e nesse mesmo tópico tem um exemplo de como usar de forma genérica também.

Criado 26 de abril de 2023
Ultima resposta 26 de abr. de 2023
Respostas 3
Participantes 2