[Resolvido] Chamar dados de outra tabela Tipo [Grupo]

Olá Presciso de uma ajuda de um código que, pra dizer a verdade não sei nem como começar ele, pois ja pesquisei muito e não
chegei a conclusão nenhuma, desculpe a ignorancia ta sou novo nisso.

Assim, eu tenho feito um aplicativo, nesse aplic. tenho as tabelas normais tipo cadastro de cidade, grupos e tatata, eu presciso uma
ajuda assim tenho no meu form cliente o campo grupo de cliente com código e descrição, e os demais dados de cadastro de
clientes, como faria para tipo clicar numa lupa chamar a tabela de grupo depois de selecionar o grupo clicando duas vezes nele e
ele se caregar com código e descrição no form atual cadastro de clientes, uso o netbeans para isso, atualmente uso JCombobox,
mas eu queria mudar para só mostrar dados depois de ter chamado esses dados, agradeço de coração se alguem me passar
alguma idéia.

Esse é o código de onde quero chamar o grupo

Aqui uma imagem de como ficou:



package cadastros;


import javax.swing.table.DefaultTableModel;
import java.sql.SQLException;
import java.util.Date;
import java.awt.event.*;
import javax.print.attribute.AttributeSet;
import javax.swing.JFormattedTextField;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.text.BadLocationException;
import utilitarios.conexao;
import javax.swing.text.MaskFormatter;

public class produtos extends javax.swing.JFrame {
       MaskFormatter formatodatacad;  
       conexao con_produto,con_grupo;
       String ordenacao="codigo";
       public produtos() {
       initComponents();       
        
        con_produto = new conexao();
        con_produto.conecta();
        
       con_grupo = new conexao();
        con_grupo.conecta();
               
        con_produto.executeSQL("select * from produtos order by "+ordenacao);
       
        jTable1.setAutoCreateRowSorter(true);
        try
        {
         while (con_grupo.resultset.next())
                tf_descgrupo.setText(con_grupo.resultset.getString("descricao"));            
                 con_grupo.resultset.first();               
         mostrar_dados();
        }
        catch(SQLException erro)
        {
            JOptionPane.showMessageDialog(null," Não localizou dados "+erro);
        }
        preencher_jtable1();
       
    }    
  
            
     private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
       vizgrupo vg = new vizgrupo();     
       vg.setVisible(true);   
       String strRetornada = vg.getCodigo(); 
       String strRetorno = vg.getDescricao();
       String codigo = vg.codigo; 
       String descricao = vg.descricao;        
       tf_grupo.setText(codigo);       
       tf_descgrupo.setText(descricao);     
    }                                        
    
 private void tf_descgrupoActionPerformed(java.awt.event.ActionEvent evt) {                                             
      atualizaTextGrupo();
    }                              
 
 private void tf_grupoActionPerformed(java.awt.event.ActionEvent evt) {                                         
     atualizaTextGrupo();
    }  

 //Procedimento para atualizar os campos textField     
 

 public void atualizaTextgrupo(){    

    try
        {
            String sql = "select * from grupo Where codigo ="+tf_grupo.getText();
            con_grupo.executeSQL(sql);
            con_grupo.resultset.first();
            tf_descgrupo.setText(con_grupo.resultset.getString("descricao"));
            
        }      
        catch (SQLException erro)            
        {
            JOptionPane.showMessageDialog(null,"Não foi possível localizar grupo");
            tf_grupo.requestFocus();
        }
    }

Agora vem o código do grupo que quero chamar.


package cadastros;


import javax.swing.table.DefaultTableModel;
import java.sql.SQLException;
import javax.swing.JOptionPane;
import utilitarios.conexao;
public class vizgrupo extends javax.swing.JFrame {
    int navega = 0;
    int linha_selecionada = 0;
    conexao con_grupo;
    String ordenacao="codigo";
    
    public vizgrupo() {
        initComponents();
        jTable1.setAutoCreateRowSorter(true);
        
        con_grupo = new conexao();
        con_grupo.conecta();
        con_grupo.executeSQL("select * from grupo order by "+ordenacao);
        try
        {
            con_grupo.resultset.first();
          
        }
        catch(SQLException erro)
        {
            JOptionPane.showMessageDialog(null,"Não localizou dados"+erro);
        }
        preencher_jtable1();
        atualiza_selecao_linha_ftable();
    }
    
        
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        con_grupo.executeSQL("select * from grupo where descricao like '"+tf_pesquisa.getText()+"%' order by "+ordenacao);
        preencher_jtable1();
        
    }                                        
    
    private void tf_pesquisaActionPerformed(java.awt.event.ActionEvent evt) {                                            
        try
          {
              String pesquisa = "select * from grupo where descricao like '"+tf_pesquisa.getText()+"%'";
              con_grupo.executeSQL(pesquisa);
              if (con_grupo.resultset.first())
              {
                 
                  preencher_jtable1();
              }
              else  JOptionPane.showMessageDialog(null,"Não localizou dados"+tf_pesquisa.getText().toUpperCase());
              
           }
            catch (Exception erro)
            {         
             JOptionPane.showMessageDialog(null,"Não localizou dados, erro = "+erro);     
            }
        
       
    }                                          
    
    private void rd_nomeActionPerformed(java.awt.event.ActionEvent evt) {                                        
        ordem_visualizacao("descricao");
    }                                       
    
    private void rd_codigoActionPerformed(java.awt.event.ActionEvent evt) {                                          
        ordem_visualizacao("codigo");
    }                                             private void botao_alterarActionPerformed(java.awt.event.ActionEvent evt) {                                         
    }                        
    private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {                                     
        linha_selecionada = jTable1.getSelectedRow(); 
        tf_pesquisa.requestFocus();
       
        
    }                                    
    
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run()
            {
                new vizgrupo().setVisible(true);
            }
        });
    }
    
    /* Variables declaration - do not modify                     
    private javax.swing.ButtonGroup grupo_ordenacao;
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JTable jTable1;
    private javax.swing.JRadioButton rd_codigo;
    private javax.swing.JRadioButton rd_nome;
    private javax.swing.JTextField tf_pesquisa;
     End of variables declaration */                  

    public void preencher_jtable1()
{
        jTable1.getColumnModel().getColumn(0).setPreferredWidth(20);
        jTable1.getColumnModel().getColumn(1).setPreferredWidth(280);
        con_grupo.executeSQL("select * from grupo where descricao like '"+tf_pesquisa.getText()+"%' order by "+ordenacao);
                
        DefaultTableModel modelo = (DefaultTableModel)jTable1.getModel();
        modelo.setNumRows(0);
        try
        {
            
            while (con_grupo.resultset.next())
                modelo.addRow(new Object []{con_grupo.resultset.getString("codigo"),con_grupo.resultset.getString("descricao")});
            con_grupo.resultset.first();
        }
        catch (SQLException erro){
            JOptionPane.showMessageDialog(null,"Erro ao listar dados");
        }
    }
    
    public void ordem_visualizacao(String Ordem)
{
        ordenacao = Ordem;
        con_grupo.executeSQL("select * from grupo  order by "+ordenacao);
        preencher_jtable1();
        
        try
        {
            con_grupo.resultset.first();
        }
        catch (SQLException erro){
            JOptionPane.showMessageDialog(null,"Erro na ordenação dos dados "+erro);
        }
    
    }
    public void atualiza_selecao_linha_ftable()
    {
        jTable1.getSelectionModel().setSelectionInterval(linha_selecionada, linha_selecionada);
    }
   
}

Por favor uma ajuda vai está dificil uma ajuda vai… :cry:

Boa Noite!

Então, você quer uma telinha de consulta, para a pessoa selecionar o grupo, e que retorne para a tela do cliente com o grupo selecionado, certo?

Se sim, acho que isso pode te dar uma idéia (à mim também, porque eu não tinha nenhuma idéia de como fazer isso =P): http://www.guj.com.br/java/48591-jdialog-pode-retornar-valor

Mas pode ver que ele usa um JDialog, para que no seu caso, “trave” a tela do cliente, e não libere até o usuário selecionar um grupo ou cancelar… Para isso, seria só colocar a classe como filha da JDialog, e setar esta tela como modal (setModal(true)). Agora, não sei quais problemas você poderia enfrentar com essa mudança, acredito que poucos, mas seria bom esperar alguém que saiba colocar essas diferenças do JFrame e JDialog para nós…

Valeuu

[quote=haroflow]Boa Noite!

Então, você quer uma telinha de consulta, para a pessoa selecionar o grupo, e que retorne para a tela do cliente com o grupo selecionado, certo?

Se sim, acho que isso pode te dar uma idéia (à mim também, porque eu não tinha nenhuma idéia de como fazer isso =P): http://www.guj.com.br/java/48591-jdialog-pode-retornar-valor

Mas pode ver que ele usa um JDialog, para que no seu caso, “trave” a tela do cliente, e não libere até o usuário selecionar um grupo ou cancelar… Para isso, seria só colocar a classe como filha da JDialog, e setar esta tela como modal (setModal(true)). Agora, não sei quais problemas você poderia enfrentar com essa mudança, acredito que poucos, mas seria bom esperar alguém que saiba colocar essas diferenças do JFrame e JDialog para nós…

Valeuu[/quote]

É exatamente como você entendeu vou ver no link que você colocou, por enquanto obrigaduu, sou muito novo nisso ainda. Wlw

[quote=Nelsonjahn][quote=haroflow]Boa Noite!

Então, você quer uma telinha de consulta, para a pessoa selecionar o grupo, e que retorne para a tela do cliente com o grupo selecionado, certo?

Se sim, acho que isso pode te dar uma idéia (à mim também, porque eu não tinha nenhuma idéia de como fazer isso =P): http://www.guj.com.br/java/48591-jdialog-pode-retornar-valor

Mas pode ver que ele usa um JDialog, para que no seu caso, “trave” a tela do cliente, e não libere até o usuário selecionar um grupo ou cancelar… Para isso, seria só colocar a classe como filha da JDialog, e setar esta tela como modal (setModal(true)). Agora, não sei quais problemas você poderia enfrentar com essa mudança, acredito que poucos, mas seria bom esperar alguém que saiba colocar essas diferenças do JFrame e JDialog para nós…

Valeuu[/quote]

É exatamente como você entendeu vou ver no link que você colocou, por enquanto obrigaduu, sou muito novo nisso ainda. Wlw[/quote]
haroflow, desculpe a ignorancia mas como ja falei sou muito novo nisso mas presciso resolver, tem como fazer um exemplo se baseando no meu código ai, criando uma idéia pra mim, Seria muito grato por isso.

Olá,

Como o seu código é meio extenso, e não tenho as condições (banco de dados preparado) para rodá-lo… o que eu poderia fazer é te dar um exemplo simplificado do que eu acho que deveria ser feito… Teste ai…

Principal.java (A tela que seria o seu cadastro de cliente…)

import java.awt.event.*;
import javax.swing.*;

public class Principal extends JFrame {

	public static void main(String args[]) {
		Principal principal = new Principal();
	}

    public Principal() { // Só cria a tela...
    	setSize(200, 100);
    	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    	JButton botao = new JButton("Abrir Consulta");
    	botao.addActionListener(botaoClick);

    	add(botao);
    	setVisible(true);
    }

	ActionListener botaoClick = new ActionListener() { // Evento do botão...
		public void actionPerformed(ActionEvent e) {
			TelaConsulta telaConsulta = new TelaConsulta(); // Note que, pelo fato da telaConsulta ser modal, a execução fica parada aqui, até que a telaConsulta seja fechada, possibilitando a espera pelo retorno...
			String strRetornada = telaConsulta.pegaResultado(); // Aqui ele pega o retorno...

			JOptionPane.showMessageDialog(null, strRetornada);
		}
	};
}

TelaConsulta.java (A seleção do grupo…)

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class TelaConsulta extends JDialog { // EXTENDS JDialog... para ter o método setModal...

	public JTextField texto;
	public String retorno; // String que será retornada...

    public TelaConsulta() {
    	setModal(true); // IMPORTANTE: seta como Modal, para esperar a tela de consulta fechar...
		setSize(200, 60);
		setLayout(new FlowLayout());

		texto = new JTextField("aaaaaaaaaaa");
		add(texto);

		JButton botao = new JButton("OK");
		botao.addActionListener(evtbtn);
		add(botao);

		setVisible(true);
    }

	public String pegaResultado() { // Função que é chamada na tela principal,
		return retorno; 			// retorna o conteúdo da caixa de texto...
	}

	ActionListener evtbtn = new ActionListener() { // Evento do botão
		public void actionPerformed(ActionEvent e) {
			retorno = texto.getText(); // Seta a propriedade retorno com o conteúdo da caixa de texto
			setVisible(false); // Fecha a tela...
		}
	};

}

Tentei comentar nos pontos mais importantes… Veja se consegue aplicar no seu programa… Também não tenho muita experiência com Java, este seria um método que encontrei, pode ser que haja outro mais fácil… rsrs

Valeu!

[quote=haroflow]Olá,

Como o seu código é meio extenso, e não tenho as condições (banco de dados preparado) para rodá-lo… o que eu poderia fazer é te dar um exemplo simplificado do que eu acho que deveria ser feito… Teste ai…

Principal.java (A tela que seria o seu cadastro de cliente…)

import java.awt.event.*;
import javax.swing.*;

public class Principal extends JFrame {

	public static void main(String args[]) {
		Principal principal = new Principal();
	}

    public Principal() { // Só cria a tela...
    	setSize(200, 100);
    	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    	JButton botao = new JButton("Abrir Consulta");
    	botao.addActionListener(botaoClick);

    	add(botao);
    	setVisible(true);
    }

	ActionListener botaoClick = new ActionListener() { // Evento do botão...
		public void actionPerformed(ActionEvent e) {
			TelaConsulta telaConsulta = new TelaConsulta(); // Note que, pelo fato da telaConsulta ser modal, a execução fica parada aqui, até que a telaConsulta seja fechada, possibilitando a espera pelo retorno...
			String strRetornada = telaConsulta.pegaResultado(); // Aqui ele pega o retorno...

			JOptionPane.showMessageDialog(null, strRetornada);
		}
	};
}

TelaConsulta.java (A seleção do grupo…)

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class TelaConsulta extends JDialog { // EXTENDS JDialog... para ter o método setModal...

	public JTextField texto;
	public String retorno; // String que será retornada...

    public TelaConsulta() {
    	setModal(true); // IMPORTANTE: seta como Modal, para esperar a tela de consulta fechar...
		setSize(200, 60);
		setLayout(new FlowLayout());

		texto = new JTextField("aaaaaaaaaaa");
		add(texto);

		JButton botao = new JButton("OK");
		botao.addActionListener(evtbtn);
		add(botao);

		setVisible(true);
    }

	public String pegaResultado() { // Função que é chamada na tela principal,
		return retorno; 			// retorna o conteúdo da caixa de texto...
	}

	ActionListener evtbtn = new ActionListener() { // Evento do botão
		public void actionPerformed(ActionEvent e) {
			retorno = texto.getText(); // Seta a propriedade retorno com o conteúdo da caixa de texto
			setVisible(false); // Fecha a tela...
		}
	};

}

Tentei comentar nos pontos mais importantes… Veja se consegue aplicar no seu programa… Também não tenho muita experiência com Java, este seria um método que encontrei, pode ser que haja outro mais fácil… rsrs

Valeu![/quote]

Haro, Ficou Muito 10000000 Obrigaduuu mesmo muito bom valeu, já está tudo funcionando essa parte, tanto na chamada na resposta e na navegação.

Valeu mesmo. Obrigaduuuuu