Dificuldade retorno por parâmetro de jtable

1 resposta
java
D

Boa tarde galera!

Estou aprendendo java, então peço desculpas caso não conseguir expressar a minha dificuldade.
Bom, vamos la …
O cenário é o seguinte, tenho um programa onde é feito cadastro de itens, onde o mesmo possui os campos,código, descrição embalagem , código de barras , Sigla embalagem …, minha dificuldade é na tela de selecionar a embalagem, onde na tela principal, ao clicar no campo txt_emb é aberto um form que traz um jtable contendo as colunas, Embalagem, Sigla , Descrição e Peso embalagem, onde será necessário selecionar a linha que contem o tipo de embalagem desejado e ao clicar em ok, retornaria a tela principal com os campos Sigla Embalagem e Descrição preenchidos.
E minha dificuldade esta sendo esta, retornar os valores selecionados para os campos da tela principal.

Segue os códigos.

//Evento onde abre a tela EMBALAGEM que traz todos os tipos de embalagem, onde é necessário selecionar uma e dar OK. O problema é esses campos txt_emb e txt_desc_emb que são os dois campos que preciso trazer os dados da tabela, porem estou perdido nessa parte.

private void txt_embMouseClicked(java.awt.event.MouseEvent evt) {                                     
   new EMBALAGEM( txt_emb.getText(), txt_desc_emb.getText()).show();       
}

//Abaixo segue o metodo embalagem, responsável por trazer as informações a jtable

public class EMBALAGEM extends javax.swing.JFrame {

String sigla_emb,desc_emb,embalagem,peso_emb;

public EMBALAGEM(String sigla, String desc) {
    initComponents();
 
    con_oracle con = new con_oracle();             
    con.conecta(" teste12345", "teste12345");
    
    String preenche_jtb_emb = "SELECT IC.EMBALAGEM,IC.SIGLA_EMB,ic.descricao,IC.PESO_EMBAL\n"
                            + " FROM EMS2CAD.embalag IC\n";
           ;
           
           jtb_emb.getColumnModel().getColumn(0).setPreferredWidth(20);//EMBALAGEM
           jtb_emb.getColumnModel().getColumn(1).setPreferredWidth(5);//SIGLA
           jtb_emb.getColumnModel().getColumn(2).setPreferredWidth(100);//DESCRIÇÃO
           jtb_emb.getColumnModel().getColumn(3).setPreferredWidth(20);//PESO
           
    DefaultTableModel modelo = (DefaultTableModel) jtb_emb.getModel();
    modelo = (DefaultTableModel) jtb_emb.getModel();
    modelo.setNumRows(0);
    
    con.executeSQL(preenche_jtb_emb);
    try {
        while (con.resultset.next()) {
            modelo.addRow(new String[]{
               con.resultset.getString("EMBALAGEM"),
               con.resultset.getString("SIGLA_EMB"),
               con.resultset.getString("DESCRICAO"),
               con.resultset.getString("PESO_EMBAL")                 
            }
            );
        }
        con.resultset.first();
    } catch (SQLException ex) {
    } 
}

//Abaixo segue o evento para selecionar a linha da tabela

private void jtb_embMouseReleased(java.awt.event.MouseEvent evt) {                                      
    DefaultTableModel modelo = (DefaultTableModel) jtb_emb.getModel();
    int linha_id = jtb_emb.convertRowIndexToModel(jtb_emb.getSelectedRow());
    
    int column = 0;
     embalagem = (String) modelo.getValueAt(linha_id, 0);
     sigla_emb = (String) modelo.getValueAt(linha_id, 1);
     desc_emb = (String) modelo.getValueAt(linha_id, 2);
     peso_emb = (String) modelo.getValueAt(linha_id, 3);                 
     
}

Minha dificuldade agora é com o botao ok, onde o mesmo terá que fechar o form embalagem e preencher os campos da tela principal conforme foi selecionado na tabela.
Se alguem tiver uma ideia de como fazer isso, agradeço desde ja .

1 Resposta

darlan_machado

Se novo em java não deveria interferir na capacidade de explicar uma situação. Afinal, a maioria dos sistemas é desenvolvida para leigos, que descrevem suas atividades e alguém implementa as rotinas devidas.

Pois bem, você precisa definir uma maneira de comunicar ao frame principal que um frame secundário foi aberto, processou algo e retornou algum valor.
Isso pode ser feito de algumas maneiras.
A mais simples é passar a instância do frame principal como argumento ao construtor do frame secundário e setar o valor especificado direto por esse objeto.
A segunda é implementar um pattern com o o observer.

Criado 22 de abril de 2019
Ultima resposta 22 de abr. de 2019
Respostas 1
Participantes 2