Por que não funciona?

2 respostas
S

To quebrado a cabeá qui faz tempo e resolvi pedir ajuda hehe, quero que quando o usuário clica numa coluna do JTable e aperta um botao o abre-se um JnternalFrame e mostra os detalhes desse cadatro especifico selecionado. Mas não sei porque ele SEMPRE mostra é do ultimo cadastro mesmo ele clicando na linha 3, 8 ou 9…

Segue uma parte do código:

Para fazer a query no banco de dados:

Object[] myline = new Object[15];
                resetCompleteList();
                int a=0;
                while(rs.next())
                {
                    table.setValueAt(rs.getInt("id"), i, 0);
                    table.setValueAt(rs.getString("razaosocial"), i, 1);
                    table.setValueAt(rs.getString("cidade"), i, 2);
                    table.setValueAt(rs.getString("uf"), i, 3);
                    myline[a] = rs.getInt("id");
                    myline[++a] = rs.getString("nomefantasia");
                    myline[++a] = rs.getString("razaosocial");
                    myline[++a] = rs.getString("cnpj");
                    myline[++a] = rs.getString("endereco");
                    myline[++a] = rs.getString("numero");
                    myline[++a] = rs.getString("bairro");
                    myline[++a] = rs.getString("complemento");
                    myline[++a] = rs.getString("cidade");
                    myline[++a] = rs.getString("uf");
                    myline[++a] = rs.getString("cep");
                    myline[++a] = rs.getString("ie");
                    myline[++a] = rs.getString("email");
                    myline[++a] = rs.getString("telefone");
                    myline[++a] = rs.getString("nomecontato");
                    completelist.add(myline);
                    i++;
                    a=0;
                    
                }

completelist é um ArrayList<Object[]>

Dai no método do botão para ver os detalhes fiz assim:

selectedrow = table.getSelectedRow(); // ja foi declarado como int
            if(selectedrow == -1)
            {
                JOptionPane.showMessageDialog(frame, "Você não selecionou nenhuma linha!", "Erro.", JOptionPane.ERROR_MESSAGE);
            }
            
            Object[] details = completelist.get(selectedrow);
            //daqui em diante é apenas código de GUI que usa esse Object[] details para gerar um JInternalFrame com os dados

Não presciso postar o resto pq aqui ja vi que deu problema ai, pois tudo do details são informações do ultimo cadastro e não do cadastro numero selectedrow.
Ja testei e vi que selectedrow está funcionando, ele passa o número correto do qual eu clico.

Alguem viu o erro??

2 Respostas

thegoergen

Tenta reiniclizar o myline a cada nova linha.

.
.
.
 table.setValueAt(rs.getString("uf"), i, 3);  
myline = new Object[15]; // Adiciona aqui, talvez esteja sempre substituindo tudo...
     myline[a] = rs.getInt("id");  
.
.
.
S

thegoergen:
Tenta reiniclizar o myline a cada nova linha.

. . . table.setValueAt(rs.getString("uf"), i, 3); myline = new Object[15]; // Adiciona aqui, talvez esteja sempre substituindo tudo... myline[a] = rs.getInt("id"); . . .

Muito Obrigado!
Funcionou!
É verdade ele ta substituindo mesmo.
Abraços!

Criado 26 de dezembro de 2008
Ultima resposta 26 de dez. de 2008
Respostas 2
Participantes 2