Dados de JDialog para outro JDialog

Bom pessoal eu pesquisei bem e não achei uma coisa que fica certinho no que quero fazer.

Seguinte:
Possuo um JDialog com o cadastro de materia-prima e uma tabela que quando ele abre, mostra todas cadastradas.
O outro JDialog possui o cadastro do produto que precisa que o usuario escolha qual materia-prima esta usando neste produto.

Oque eu queria fazer:
Outro JDialog somente com a tabela aparecendo todas as materia-primas cadastradas. (Pronto)
No JDialog do produto, fazer um botao que chama este JDialog de “pesquisa e materia prima”. (Pronto)
Fazer com que quando o usuario de 2 cliques na materia prima desejada, o programa mande as informações do JDialog com a tabela das materia-Primas para o JDialog do produto.

Eu não estou conseguindo.
Dei uma pesquisada e achei uma dica do ViniGodoy : http://www.guj.com.br/posts/list/55710.java#292687
Mais não consigo implementar isso direito.
Alguem pode me dar uma ajuda?

E qual é a dúvida?

E que quando eu dou 2 cliques no item da tabela do JDialog2 eu não consigo transferir as informações pro JDialog1.

Pode postar o código do seu JDialog2?

Uma solução que eu achei para conseguir puxar os dados dessa tabela do JDialog2 para o JDialog de cadastro. foi criar esse JDialog2 dentro do JDialog 1 mesmo… usando um construtor por código… Ai sim conseguir ter acesso ao JDialog de cadastro e passar as informações desta tabela para ele.

    //Construindo a Janela
    JPanel Painel = new JPanel(new FlowLayout());
    String[] Colunas = new String[]{"Nome","Fone1","Fone2"};
    DefaultTableModel dtm = new DefaultTableModel(Colunas,0){   
      @Override  
      public boolean isCellEditable(int row, int col)   
      {   
             return false;   
      }   
    };
    

    
    final JTable Tabela = new JTable(dtm);
    final JFrame Janela = new JFrame("Busca de Transportadora");
    
    
    Tabela.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); //COMANDO PARA INICIAR A TABELA JA COM A BARRA DE ROLAGEM
    
    Tabela.getColumnModel().getColumn(0).setPreferredWidth(210);
    Tabela.getColumnModel().getColumn(1).setPreferredWidth(120);
    Tabela.getColumnModel().getColumn(2).setPreferredWidth(120);
    
    JScrollPane scrollPane = new JScrollPane(Tabela);  
    Painel.add(scrollPane);
    Janela.add(Painel);
    setVisible(false);
    Janela.setSize(467, 450);
    Janela.setVisible(true);
    Janela.setLocationRelativeTo(null); //COMANDO QUE FAZ A JANELA ABRIR NO CENTRO DA TELA 

    try {
            JBancodeDados jbanco = new JBancodeDados();
            
            Class.forName("com.mysql.jdbc.Driver");
            Connection con;
            con = DriverManager.getConnection("jdbc:mysql://"+jbanco.get_IP()+"/"+jbanco.get_nomeBanco(),jbanco.get_Usuario(),jbanco.get_Senha());
            String query = "SELECT * FROM cad_transporte WHERE Razao LIKE ?";
            PreparedStatement stmt = con.prepareStatement(query);
            stmt.setString(1, "%");
            ResultSet rs;
            rs = stmt.executeQuery();
            
            dtm.setNumRows(0);
            Tabela.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); //COMANDO PARA CRIAR A BARRA DE ROLAGEM NA TABELA
            
            
            while(rs.next()){
                dtm.addRow(new Object[]{rs.getString("Fantasia"),rs.getString("Fone1"),rs.getString("Fone2")});
            }
            
            //TamanhoColunasTabela();
            
            stmt.close();
            con.close();
            rs.close();            
            
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(JConTransporte.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Erro de SQL." + ex);
        }

    Tabela.addMouseListener(new MouseAdapter() { 
        @Override
        public void mouseClicked(MouseEvent e) {  
                   if (e.getClickCount()==2){
                      jTTransportadora.setText(String.valueOf(Tabela.getValueAt(Tabela.getSelectedRow(), 0)));
                      jTFone1Transporte.setText(String.valueOf(Tabela.getValueAt(Tabela.getSelectedRow(), 1)));
                      jTFone2Transporte.setText(String.valueOf(Tabela.getValueAt(Tabela.getSelectedRow(), 2)));
                      Janela.setVisible(false);
                      setVisible(true);
                    }}});

Mais só assim mesmo. Do jeito que eu queria, que era para esta janela ser um JDialog criado pela parte gráfica do netbeans, eu não consegui. Mesmo fazendo as variaveis do JDialog1 e 2 sendo globais, eu não consegui mandar informações de um para o outro.

Nossa, você chegou a ler o exemplo que deixei no outro tópico?!?!?

Li sim, também baixei o arquivo que você deixou lá, mais não consegui implementar… Vi que você usou Jinternal… Teria como fazer com 2 JDialog?

Sim. O importante é você ver a JDialog que o InternalFrame chama.

Quem chama a dialog pode ser qualquer coisa.

Basicamente, é só entender que o JDialog é uma janela qualquer, e você pode ler dados da dialog simplesmente adicionando nela alguns getters.

Vai ficar mais difícil usando o DefaultTableModel e deixando seu código sem classes de negócio, como está nesse código que você fez aí.

Deixa eu ver se eu entendi… no caso do exemplo que tem para baixar la, o botão ok só faz fechar a janela msm?
Quem puxa as informações é o método que fez a abertura e le as informações no momento em que a janela e fechada?

Eu tentei aqui mais ta dando erro:

Dialog1:


/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package teste2dialog;

/**
 *
 * @author Kelvin
 */
public class Dialog1 extends javax.swing.JDialog {

    /**
     * Creates new form Dialog1
     */
    public Dialog1(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
    }
    public void abrir(){
        Dialog2 d2 = new Dialog2(null);
        if(d2.alterarDados()){
            Recebidor.setText(d2.getNome());
        }
        d2.dispose();
        
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        Recebidor = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

        Recebidor.setText(" ");

        jButton1.setText("jButton1");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(148, 148, 148)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(10, 10, 10)
                        .addComponent(jButton1))
                    .addComponent(Recebidor, javax.swing.GroupLayout.PREFERRED_SIZE, 95, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(157, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(104, 104, 104)
                .addComponent(Recebidor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jButton1)
                .addContainerGap(142, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
abrir();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /*
         * Set the Nimbus look and feel
         */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /*
         * If Nimbus (introduced in Java SE 6) is not available, stay with the
         * default look and feel. For details see
         * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(Dialog1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(Dialog1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(Dialog1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(Dialog1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /*
         * Create and display the dialog
         */
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                Dialog1 dialog = new Dialog1(new javax.swing.JFrame(), true);
                dialog.addWindowListener(new java.awt.event.WindowAdapter() {

                    @Override
                    public void windowClosing(java.awt.event.WindowEvent e) {
                        System.exit(0);
                    }
                });
                dialog.setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify
    private javax.swing.JTextField Recebidor;
    private javax.swing.JButton jButton1;
    // End of variables declaration
}

Dialog2:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package teste2dialog;

/**
 *
 * @author Kelvin
 */
public class Dialog2 extends javax.swing.JDialog {
protected boolean okSelecionado;
    /**
     * Creates new form Dialog2
     */
    public Dialog2(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
        okSelecionado =true;
    }

    Dialog2(Object object) {
        throw new UnsupportedOperationException("Not yet implemented");
    }

        public boolean alterarDados()    
    {        
        okSelecionado = false;  //Marcamos que o ok n&#65533;o foi selecionado
        setModal(true);         //A dialog tem que ser modal. S&#65533; pode retornar do setVisible ap&#65533;s ficar invis&#65533;vel.
        setVisible(true);       //Mostramos a dialog e esperamos o usu&#65533;rio escolher alguma coisa.
        return okSelecionado;   //Retornamos true, se ele pressionou ok.
    }
        
       public String getNome(){
       return jTextField1.getText();
       } 
    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jTextField1 = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

        jTextField1.setText("a");

        jButton1.setText("jButton1");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(152, 152, 152)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jButton1)
                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 75, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(173, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(126, 126, 126)
                .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jButton1)
                .addContainerGap(125, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
                    okSelecionado = true; //Dizemos que o ok foi selecionado.
                    setVisible(false);
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /*
         * Set the Nimbus look and feel
         */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /*
         * If Nimbus (introduced in Java SE 6) is not available, stay with the
         * default look and feel. For details see
         * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(Dialog2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(Dialog2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(Dialog2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(Dialog2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /*
         * Create and display the dialog
         */
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                Dialog2 dialog = new Dialog2(new javax.swing.JFrame(), true);
                dialog.addWindowListener(new java.awt.event.WindowAdapter() {

                    @Override
                    public void windowClosing(java.awt.event.WindowEvent e) {
                        System.exit(0);
                    }
                });
                dialog.setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JTextField jTextField1;
    // End of variables declaration
}

Erro:

Exception in thread "AWT-EventQueue-0" java.lang.UnsupportedOperationException: Not yet implemented
	at teste2dialog.Dialog2.<init>(Dialog2.java:23)
	at teste2dialog.Dialog1.abrir(Dialog1.java:21)
	at teste2dialog.Dialog1.jButton1ActionPerformed(Dialog1.java:79)
	at teste2dialog.Dialog1.access$000(Dialog1.java:11)
	at teste2dialog.Dialog1$1.actionPerformed(Dialog1.java:48)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.Component.processMouseEvent(Component.java:6505)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
	at java.awt.Component.processEvent(Component.java:6270)
	at java.awt.Container.processEvent(Container.java:2229)
	at java.awt.Component.dispatchEventImpl(Component.java:4861)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
	at java.awt.Container.dispatchEventImpl(Container.java:2273)
	at java.awt.Window.dispatchEventImpl(Window.java:2713)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
	at java.awt.EventQueue.access$000(EventQueue.java:101)
	at java.awt.EventQueue$3.run(EventQueue.java:666)
	at java.awt.EventQueue$3.run(EventQueue.java:664)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:680)
	at java.awt.EventQueue$4.run(EventQueue.java:678)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:121)
	at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:182)
	at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:221)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:219)
	at java.awt.Dialog.show(Dialog.java:1072)
	at java.awt.Component.show(Component.java:1651)
	at java.awt.Component.setVisible(Component.java:1603)
	at java.awt.Window.setVisible(Window.java:1013)
	at java.awt.Dialog.setVisible(Dialog.java:1003)
	at teste2dialog.Dialog1$2.run(Dialog1.java:127)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
	at java.awt.EventQueue.access$000(EventQueue.java:101)
	at java.awt.EventQueue$3.run(EventQueue.java:666)
	at java.awt.EventQueue$3.run(EventQueue.java:664)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:675)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Troque a linha 21 da Dialog1 de:

Para:

Troque esse construtor da Dialog2:

Para:

E apague esse construtor aqui:

Dialog2(Object object) { throw new UnsupportedOperationException("Not yet implemented"); }

A agora deu, o erro era somente na inicialização do meu dialog 2 com a parte do:

public Dialog2(java.awt.Frame parent, boolean modal) {  
        super(parent, modal);  
        initComponents();  
        okSelecionado =true;  
    } 

Ai deixei assim:

    public Dialog2(Frame owner) {
        super(owner);
        initComponents();
        okSelecionado =true;
    }

Funcionou bacana… Vou fazer a implementação com as tabelas, pra ver se fica tudo certinho.
Obrigado ViniGodoy

[quote=kelvinoenning]Deixa eu ver se eu entendi… no caso do exemplo que tem para baixar la, o botão ok só faz fechar a janela msm?
Quem puxa as informações é o método que fez a abertura e le as informações no momento em que a janela e fechada?[/quote]

Isso mesmo, fácil né?

[quote=ViniGodoy][quote=kelvinoenning]Deixa eu ver se eu entendi… no caso do exemplo que tem para baixar la, o botão ok só faz fechar a janela msm?
Quem puxa as informações é o método que fez a abertura e le as informações no momento em que a janela e fechada?[/quote]

Isso mesmo, fácil né?[/quote]

É complicado somente para entender no início, pois como eu estou estudando java na faculdade ainda… eu não estou 100% familiarizado. Mais fico tentando sempre que preciso fazer alguns códigos para meu projeto.
Como visse logo acima, eu implementei uma “gambiarra” para resolver parte do meu problema, mais agora que aprendi a fazer essa interligação em JDialogs, isso vai melhorar bastante meu programa.