Pasar Datos de un JDialog a Otro JDialog

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





  1. celsoxvi

    celsoxvi Miembro de bronce

    Registro:
    1 Mar 2009
    Mensajes:
    1,196
    Likes:
    72




    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 Miembro maestro

    Registro:
    15 Nov 2008
    Mensajes:
    254
    Likes:
    10
    puede ser un uso de interface? nose si será lo correcto xD.
     
  3. eduar2083

    eduar2083 Miembro frecuente

    Registro:
    26 Jul 2011
    Mensajes:
    224
    Likes:
    46
    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