JFrame através da JTable

Pessoal bom dia, estou a procura e não acho.
Tenho uma JFrame com uma tela, quero selecionar uma linha e abrir uma outra JFrame com os dados do cliente. Já estou usando bando de dados, estou com o PGAdmin.


O meu Dão do cadastro de cliente é:

package modeloDao;

import modeloConection.ConexaoBD;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.swing.JOptionPane;
import modeloBeans.Beans_Cadastro_Cliente;
/**
*

  • @author Felipe Marques
    */
    public class Dao_Cadastro_Cliente {

    ConexaoBD conex = new ConexaoBD();
    Beans_Cadastro_Cliente mod = new Beans_Cadastro_Cliente ();
    String estado;

public void Salvar (Beans_Cadastro_Cliente mod)
{
conex.conexao();
try {
PreparedStatement pst = conex.con.prepareStatement(“insert into cliente (cliente_razao_social,cliente_cnpj,”
+ “cliente_ie,cliente_telefone,cliente_rua,cliente_numero,cliente_complemento,cliente_bairro,”
+ "cliente_cidade,cliente_estado,cliente_cep,cliente_contato,cliente_email,cliente_situacao,cliente_nome_fantasia) "
+ “values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)”);
pst.setString(1, mod.getRazao_social());
pst.setInt(2, mod.getCnpj());
pst.setInt(3, mod.getIE());
pst.setInt(4, mod.getTelefone());
pst.setString(5, mod.getRua());
pst.setInt(6,mod.getNumero());
pst.setString(7, mod.getComplemento());
pst.setString(8,mod.getBairro());
pst.setString(9, mod.getCidade());
pst.setString(10, mod.getEstado());
pst.setInt(11, mod.getCep());
pst.setString(12, mod.getContato());
pst.setString(13, mod.getEmail());
pst.setString(14, mod.getSituacao());
pst.setString(15, mod.getNome_fantasia());
pst.execute();
JOptionPane.showMessageDialog(null, “Salvo com sucesso.”);
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, “Revise o cadastro.” +ex);
}

conex.desconecta();

}
public void alterar (Beans_Cadastro_Cliente mod){
conex.conexao();
try {
PreparedStatement pst = conex.con.prepareStatement(“update cliente set cliente_razao_social=?,cliente_cnpj=?,cliente_ie=?,”
+ “cliente_telefone=?,cliente_rua=?,cliente_numero=?,cliente_complemento=?,cliente_bairro=?,cliente_cidade=?,”
+ “cliente_estado=?,cliente_cep=?,cliente_contato=?,cliente_email=?,cliente_situacao=?,”
+ “cliente_nome_fantasia=? where id_cliente=?”);
pst.setString(1, mod.getRazao_social());
pst.setInt(2, mod.getCnpj());
pst.setInt(3, mod.getIE());
pst.setInt(4, mod.getTelefone());
pst.setString(5, mod.getRua());
pst.setInt(6,mod.getNumero());
pst.setString(7, mod.getComplemento());
pst.setString(8,mod.getBairro());
pst.setString(9, mod.getCidade());
pst.setString(10, mod.getEstado());
pst.setInt(11, mod.getCep());
pst.setString(12, mod.getContato());
pst.setString(13, mod.getEmail());
pst.setString(14, mod.getSituacao());
pst.setString(15, mod.getNome_fantasia());
pst.execute();
JOptionPane.showMessageDialog(null, “Usuário alterado com sucesso!”);
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, “Revise o cadastro.”);
}

conex.desconecta();

}

public Beans_Cadastro_Cliente buscacliente (Beans_Cadastro_Cliente mod){

conex.conexao();
conex.executaSql("select * from cliente where cliente_razao_social like '%"+mod.getPesquisa()+"%'");

    try {
        conex.rs.first();
        mod.setCodigo(conex.rs.getInt("id_cliente"));
        mod.setRazao_social(conex.rs.getString("cliente_razao_social"));

                }
    catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, "Usuário não cadastrado" );
    }



conex.desconecta();
    return mod;

}

}

Quando postar códigos aqui, seleciona ele todo e clica em </>.

Há N maneiras de vc fazer isso, uma delas é via construtor.

Exemplo:

Frame 1:

new NovoFrame(nome, email, situação).setVisible(true);

Frame 2

public class NovoFrame{
   public NovoFrame(String nome, String Email, String situação){
       campoNome.setText(nome);
       .....
   }

    ....
 }

Vc pode passar o Beans_Cadastro_Cliente no construtor também

Orochimaru valeu pela dica do </> não sabia que tinha essa função.

Desculpa a ignorância porque estou realmente partindo do zero. Quando você me disse para usar o Frame 1, seria na minha Frame da tabela, usaria esse codigo no MouseClicked ? E como assim passar o Beans_Cadastro_Cliente no construtor?

Desculpa esses perguntas mas os cursos que estou tentando fazer só ensina com a tabela na mesma Frame.

Para chamar o seu segundo frame você precisa de algo para invocar sua ação. Suponho que seja o seu botão “acessar”; neste caso, adicione um action listerner nele, similar a este código:

seubotao.addActionListener((e) -> {
    criarUmNovoFrame(seuBean);
});

Caso queira chamar o frame quando um item for selecionado (sem clicar no botão) pode usar o List Selection Listener. Ficará algo similar a isto:

suaTabela.getSelectionModel().addListSelectionListener((e) -> {
        criarUmNovoFrame(seuBean);
});

Ainda sim, caso queira chamar o frame quando o usuário clicar com o mouse, digamos, dois cliques com o botão esquerdo; podes utilizar o Mouse Listener. Um pequeno exemplo:

suaTabela.addMouseListener(new MouseAdapter() {
    @Override
    public void mouseClicked(MouseEvent e) {
        super.mouseClicked(e);

         if (e.getClickCount() == 2 && e.getButton() == MouseEvent.BUTTON1) {
             criarUmNovoFrame(seuBean);
         }
   }
});

Em todo caso precisará invocar seu novo frame. Como o @rodriguesabner disse, você pode passar seu bean como parâmetro no construtor para poder recuperar os dados ao criar seu novo frame ou fazer algo mais ou menos assim:

public void criarUmNovoFrame(Bean seuBean){
    JFrame seuNovoFrame = new JFrame();
    seuNovoFrame.preencherCampos(seuBean); // Método que você irá criar para setar os valores

    // Quando o usuário clicar para fechar a nova janela não encerrará seu programa
    seuNovoFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    // Exibe o seu frame
    seuNovoFrame.setVisible(true);
}