Anomalia na inserção de dados na JTable

9 respostas
G

Boa noite developers,

Estou com um problema no método PopularTable(). Quando clico no evento ele desfaz a estrutura da minha tabela e traz apenas os ID dos clientes.
Segue imagens abaixo para entender melhor:

Como deveria ser após clicado no botão “Popula Tabela”:

jTable

Como ela fica após clicar no botão “Popula Tabela”:

jTable-Anomalia

Valeu…

9 Respostas

staroski

Posta o código completo das classes envolvidas.
Através das imagens não dá pra adivinhar sua implementação. :wink:

darlan_machado

Acredito que o problema esteja na implementação dos métodos da tua table model. Eles estão retornando apenas uma coluna para cada ação.
O getColumnName devolve o array com o nome das colunas de uma única vez (por isso o nome da coluna apresenta os valores separados por vírgula, em uma única coluna).
E o getValueAt parece devolver corretamente.
Ah, provavelmente o getColumnCount esteja como 1, apenas.

G

Flw brother! Eu estou no trabalho agora, mas por volta das 19h estarei

G

Boa noite, deem uma olhadinha na minha carga de tabela vinda do BD, se precisar, mostro minhas classes de ServicesFactory, DAO e da conexão com o BD.

private void dadosCliente(){
    
     try{
        
        ClienteService cs = ServiceFactory.getClienteService();
        
        ArrayList<CadClientes> cad = new ArrayList<>();
        
        cad = cs.searchCliente();
        
        for(int i = 0; i < cad.size(); i++){
            
            dtm.addRow(new String[]{
                String.valueOf(cad.get(i).getIdCliente()),
                String.valueOf(cad.get(i).getNome()),
                String.valueOf(cad.get(i).getCpf()),
                String.valueOf(cad.get(i).getTelefone()),
                String.valueOf(cad.get(i).getEndereco()),
            });   
        }
        
        jTable1.setModel(dtm);
        
     }catch(Exception ex){
         JOptionPane.showMessageDialog(rootPane,
                "Erro: "+ ex.getMessage(),
                "Erro",
                JOptionPane.ERROR_MESSAGE);
    }
}
darlan_machado

Se isto significa o que eu acredito que significa, eu vou dizer para parar com isso já e começar do zero (ao menos o table model).
Isto me leva a crer que você está usando o (temível) DefaultTableModel. Logo, tenho que te dizer para abandonar ele e criar o seu próprio.

G

Ele é ruim?
Só aprendi com ele, bem, pensei que aprendi…

darlan_machado

Olha, ele é obscuro, para dizer o mínimo. Você sabe como ele funciona, por baixo dos panos?
Eu sei, a ideia de ter que fazer algo do zero, na mão, parece assustadora (sim, um dia eu já tive que dar esse passo, sair do DTM e passar para um CustomTableModel).
Agora, quando você desenvolver e ver o quão simples isso é, você vai se perguntar: por quê eu nunca tinha feito isso antes?

G

Obrigado pela grande ajuda, mas poderia me fazer mais um grande favor? Sabes me dizer onde posso aprender a usar esse novo método? Conhece alguns sites?

darlan_machado

Dá uma olhada aqui

Criado 19 de janeiro de 2018
Ultima resposta 20 de jan. de 2018
Respostas 9
Participantes 3