Pasar Datos de un JDialog a Otro JDialog

Publicado en 'Programación' por celsoxvi, 28 Nov 2011.





  1. celsoxvi

    celsoxvi  

    Registro:
    1 Mar 2009
    Mensajes:
    1,196
    Likes:
    74
    Temas:
    114




    Hola Comunidad

    Bueno tengo una Duda, Y es que necesito pasar datos de un JDialog a otro JDialog

    Tengo un JDialog llamado Principal y otro que se llama SC, Cuando Abro el JDialog Principal me Muestra toda la Interfaz, Ahora hay un Botón que Dice Llamar SC, que es otro JDialog, una vez que haga Click ahi se me Visualiza el JDialog SC y ahí busco un Condigo, Una vez encontrado cuando haga Click en el Botón Listo, El Código Buscado que pase a un JTextField del JDialog Principal, Esto es Nuevo recién estoy viendo esta parte, Alguien tiene un Ejemplo de ello. Gracias.
     


  2. EruKun

    EruKun  

    Registro:
    15 Nov 2008
    Mensajes:
    264
    Likes:
    13
    Temas:
    22
    puede ser un uso de interface? nose si será lo correcto xD.
     
  3. eduar2083

    eduar2083  

    Registro:
    26 Jul 2011
    Mensajes:
    239
    Likes:
    51
    Temas:
    21
    Hola. Y cuál es el componente que inicia la aplicación, es decir el que tiene el método main ¿El JDialog llamado Principal? o es un JFrame que no mencionas.
    Te pongo un pequeño ejemplo suponiendo que que es un JDialog el que inicia la aplicación, es decir, el llamado Principal en tu caso.
    Código:
    /*
     *  MyDialogPrincipal.java
     *
     */
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class MyDialogPrincipal extends JDialog
    {
     private JLabel lblDistrito;
     private JTextField txtDistrito;
     private JButton btnElegir;
     private MyDialogDistrito dlgDistrito;
     public MyDialogPrincipal()
     {
      setTitle("Test de JDialog");
      setSize(400, 200);
      initComponents();
      addListeners();
     }
     private void initComponents()
     {
      lblDistrito = new JLabel("Distrito");
      txtDistrito = new JTextField(15);
      btnElegir = new JButton("...");
      dlgDistrito = new MyDialogDistrito(this);
      setLocationRelativeTo(null);
      txtDistrito.setEditable(false);
      txtDistrito.setFont(new Font("Arial", Font.BOLD, 12));
      txtDistrito.setHorizontalAlignment(SwingConstants.CENTER);
      Container contenedor = getContentPane();
      contenedor.setLayout(new FlowLayout());
      contenedor.add(lblDistrito);
      contenedor.add(txtDistrito);
      contenedor.add(btnElegir);
     }
     private void addListeners()
     {
      addWindowListener(new WindowAdapter()
      {
       public void windowClosing(WindowEvent evt)
       {
        dialogWindowClosing(evt);
       }
      });
      btnElegir.addActionListener(new ActionListener()
      {
       public void actionPerformed(ActionEvent evt)
       {
        btnElegirActionPerformed(evt);
       }
      });
     }
     private void dialogWindowClosing(WindowEvent evt)
     {
      System.exit(0);
     }
     private void btnElegirActionPerformed(ActionEvent evt)
     {
      dlgDistrito.setVisible(true);
     }
     public static void main(String[] args)
     {
      new MyDialogPrincipal().setVisible(true);
     }
     class MyDialogDistrito extends JDialog
     {
      private JComboBox cboDistrito;
      private JButton btnAceptar;
      public MyDialogDistrito(JDialog padre)
      {
       super(padre, "Elegir distrito", true);
       initComponents();
       addListeners();
      }
      private void initComponents()
      {
       cboDistrito = new JComboBox();
       btnAceptar = new JButton("Aceptar");
       setLocationRelativeTo(null);
       setResizable(false);
       String[] distritos = {"Puente Piedra", "Los Olivos", "Chorrillos", "Ate", "La Molina", "Cercado", "Miraflores", "Otro"};
       for (int i = 0; i < distritos.length; ++i)
        cboDistrito.addItem("D" + String.format("%03d:  ", i + 1) + distritos[i]);
       Container contenedor = getContentPane();
       contenedor.setLayout(new FlowLayout());
       contenedor.add(cboDistrito);
       contenedor.add(btnAceptar);
       pack();
      }
      private void addListeners()
      {
       btnAceptar.addActionListener(new ActionListener()
       {
        public void actionPerformed(ActionEvent evt)
        {
         btnAceptarActionPerformed(evt);
        }
       });
      }
      private void btnAceptarActionPerformed(ActionEvent evt)
      {
       setVisible(false);
       dispose();
       txtDistrito.setText(cboDistrito.getSelectedItem().toString());
      }
     }
    }
    Como ves, en este caso, una forma es crear la clase del segundo JDialog como interna al primero que es el padre.

    Ahora bien, si es un JFrame el que lleva el método main, en ese caso tendrías que crear tu JDialog llamado principal como interno al JFrame y dentro de dicho JDialog, crear el otro JDialog llamado SC.

    Espero te sirva de algo.
    Un saludo.
     
    Última edición: 30 Nov 2011