Clicar linha em tabela e preencher jtextfileds de jframe

10 respostas
W
Estou com o seguinte problema, no jframe tenho um botão que chama um dialog com uma tabela de consulta e gostaria de clicar em uma linha da tabela e prrencher os jtextfield do jframe para poder fazer alteração, não estou conseguindo passar os dados para o jframe como posso fazer isso. Fiz assim mas não ta passando pro outro jframe
private void tabelaMouseClicked(java.awt.event.MouseEvent evt) {  
       try {  
        int indiceView = tabela.getSelectedRow();    
        int indiceModel = sorter.convertRowIndexToModel(indiceView);    
          
        String[] linha = this.model.getValueAt(indiceModel);  
        Integer codigo = Integer.parseInt(linha[0]);       
        
        DAOVeiculo dao = new DAOVeiculo();  
        Veiculo v = dao.obterVeiculo(codigo);   
          
        FormVeiculo fv;  
        fc = new FormVeiculo();  
          
        fc.getTxtCodigo().setText(v.getCodigo().toString());          
        fc.getTxtModelo().setText(v.getModelo());  
        fc.getTxtAno().setText(v.getAno().toString());  
        fc.getTxtCor().setText(v.getCor());  
        fc.getTxtPlaca().setText(v.getPlaca());  
        fc.getComboComb().setSelectedItem(v.getCombustivel());  
        fc.getTxtRenavam().setText(v.getRenavam());  
        fc.getTxtChassi().setText(v.getChassi());                 
} catch (Exception ex) {  
            Logger.getLogger(NewJDialog.class.getName()).log(Level.SEVERE, null, ex);  
        }          
    }

10 Respostas

marcospaulo.suporte

é importante que o campo de texto que vc esta tentando mandar o conteudo esteja como.:

public static volatile javax.swing.JTextField tf_meuCampoTexto;

Pq senão, não irá receber valores de outro formulario.
Vamos supor que eu precise mandar de uma frame chamado ‘teste’ pra um frame chamado ‘TESTE_2’.

String teste = "abc";
TESTE_2.tf_meuCampoTexto.setText(teste);
W

Fiz isso, mas mesmo assim não está passando

C

Como você preenche sua tabela com os dados?

W

Com um ArrayList, segue codigo public ArrayList obterVeiculos() { ArrayList dados = new ArrayList(); try { Connection con = Conexao.obterCon(); PreparedStatement psmt = con.prepareStatement("SELECT * FROM veiculo"); ResultSet rs = psmt.executeQuery(); while (rs.next()) { Veiculo v = new Veiculo(); v.setCodigo(rs.getInt("cod_vei")); v.setModelo(rs.getString("modelo")); v.setAno(rs.getInt("ano")); v.setCor(rs.getString("cor")); v.setPlaca(rs.getString("placa")); v.setCombustivel(rs.getString("combustivel")); v.setRenavam(rs.getString("renavam")); v.setChassi(rs.getString("chassi")); String[] linha = {v.getCodigo().toString(), v.getModelo(),v.getAno().toString(),v.getCor(),v.getPlaca(),v.getCombustivel(),v.getRenavam(),v.getChassi()}; dados.add(linha); } con.close(); } catch (Exception e) { e.printStackTrace(); } return dados; }

C
Tenta assim:
Integer codigo = Integer.parseInt(lista.get(jTable1.getSelectRow()).getId());          // pegando o id selecionado a partir da lista
          
        DAOVeiculo dao = new DAOVeiculo();    
        Veiculo v = dao.obterVeiculo(codigo);  // buscando com o id selecionado

Se entendi direito o seu código isso deve funcionar.

W

Eu to conseguindo pegar o codigo, problema ta na hora de passar pro outro jframe.

C

a tá, tenta passar a lista como parametro no construtor dele, dai é só pegar os dados!

C

O seu método obterVeiculo() tá retornando todos os dados certos né?
Passa a o objeto Veiculo, melhor!

W
To fazendo isso, passando assim
private void tabelaMouseClicked(java.awt.event.MouseEvent evt) {                                    
       try {
        int indiceView = tabela.getSelectedRow();  
        int indiceModel = sorter.convertRowIndexToModel(indiceView);

        String[] linha = this.model.getValueAt(indiceModel);
        Integer codigo = Integer.parseInt(linha[0]); 
        Veiculo v = dc.obterVeiculo(codigo); 
        
        FormVeiculo fv;
        fv = new FormVeiculo();
        
        fv.txtCodigo.setText(v.getCodigo().toString());       
        fv.txtModelo.setText(v.getModelo());
        fv.txtAno.setText(v.getAno().toString());
        fv.txtCor.setText(v.getCor());
        fv.txtPlaca.setText(v.getPlaca());
        fv.comboComb.setSelectedItem(v.getCombustivel());
        fv.txtRenavam.setText(v.getRenavam());
        fv.txtChassi.setText(v.getChassi());        
} catch (Exception ex) {
            Logger.getLogger(NewJDialog.class.getName()).log(Level.SEVERE, null, ex);
        }
        
    }
C
Tenta assim
Veiculo v = dc.obterVeiculo(codigo);   
          
        FormVeiculo fv;  
        fv = new FormVeiculo(v);

Dai no construtor do FormVeiculo você coloca a Classe Veiculo como parametro.

Esse trecho você muda e coloca no FormVeiculo
getTxtCodigo().setText(v.getCodigo().toString());            
        getTxtModelo().setText(v.getModelo());    
        getTxtAno().setText(v.getAno().toString());    
        getTxtCor().setText(v.getCor());    
        getTxtPlaca().setText(v.getPlaca());    
        getComboComb().setSelectedItem(v.getCombustivel());    
        getTxtRenavam().setText(v.getRenavam());    
        getTxtChassi().setText(v.getChassi());
Criado 11 de dezembro de 2012
Ultima resposta 11 de dez. de 2012
Respostas 10
Participantes 3