Clicar no jtable e jogar no jtext em outro form (Swing)

1 resposta
M

Boa tarde, sou iniciante em programação java, estou desenvolvendo um sisteminha simples pelo netbeans.
A tela de cadastro de cliente está em um JIternalFrame, ao digitar algo no campo nome e precionar enter, ele abre um dialog com um jtable e lista todos os clientes com o nome digitado.
O problema está quando dou 2 cliques na tabela para selecionar o cliente. Preciso que ao clicar, seja enviado os dados da table que está no dialog para os jtexts que estão no internalFrame.

Ao precionar enter, se o campo não estiver vazio, vai chamar a função de consulta.
private void cliFantasiaTextKeyPressed(java.awt.event.KeyEvent evt) {                                           
        // TODO add your handling code here:
        if (evt.getKeyCode()==KeyEvent.VK_ENTER && !cliFantasiaText.getText().isEmpty() && altera==false && novo==false){
            consultaNome(cliFantasiaText.getText(), "fantasia");
        }
    }
Aqui vai procurar no banco o nome digitado.
private void consultaNome(String nome, String campo) {
        rs = conexao.setQuery("SELECT * FROM clientes WHERE " + campo + " like '%" + nome + "%'");
        try {
            if (!rs.next()) { //se estiver vazio
                JOptionPane.showMessageDialog(this, "Cadastro não encontrado");
            } else {
                cc = new JDialoConsCli(sistema, true); //cria o JDialog
                rs.previous();
                cc.consultaNome(rs);
            }

        } catch (SQLException sqle) {
            sqle.printStackTrace();
        }
    }
No JDialog é exibido os nomes encontrados em um JTable:
public void consultaNome(ResultSet rs){
        rsc=rs;
        try{
            for (int i=0;rs.next();i++){
                DefaultTableModel modeloTabela = (DefaultTableModel)jTable1.getModel();  
                modeloTabela.addRow(new String[ modeloTabela.getColumnCount() ]); 
                jTable1.setValueAt(rsc.getString(1), i, 0);
                jTable1.setValueAt(rsc.getString(2), i, 1);
                jTable1.setValueAt(rsc.getString(3), i, 2);
                jTable1.setValueAt(rsc.getString(4), i, 3);
            }
        }catch (SQLException sqle){sqle.printStackTrace();}
        setVisible(true);
    }
Até aqui está funcionando tudo... Agora ao dar 2 cliques em uma linha da Table:
private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {                                     
        // TODO add your handling code here:
        if (evt.getClickCount() == 2) {
            try{
            rsc.absolute(jTable1.getSelectedRow()+1); //pega a linha clicada e posiciona o RS 
            fantasia = rsc.getString(2); //pega o valor do campo 2
            cpf = rsc.getString(3); //pega o valor do campo 3
            
            }catch (SQLException sqle){sqle.printStackTrace();}
            setVisible(false);
            jic.mostraCli(fantasia, cpf); //envia os valores para o JInternalFrame
        }
    }
Aqui era para preencher o JText com os valores:
public void mostraCli(String fantasia, String cpf) {
        cliFantasiaText.setText(fantasia); //o campo fica em branco
        cliCPFText.setText(cpf); //o campo fica em branco
        System.out.print(fantasia + cpf); //nesse teste o sistema imprime os valores corretamente
    }

Já tentei enviar os valores selecionados de outras formas mas também não consegui....
Alguém sabe o que estou fazendo de errado?

Obrigado!

1 Resposta

ViniGodoy

http://www.guj.com.br/java/55710-jdialog-devolvendo-valor-pra-jinternalframe#292687

Também dê uma olhada no link ao lado do texto em vermelho na minha assinatura.
Não use DefaultTableModel, causa envelhecimento precoce, perda do sono, taquicardia e impotência sexual.

Criado 5 de janeiro de 2012
Ultima resposta 5 de jan. de 2012
Respostas 1
Participantes 2