Ver Mensaje Individual
  #9 (permalink)  
Antiguo 26/10/2011, 13:21
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Pasar valor de JDialog a JFrame

Hola,

Cita:
Iniciado por gustavopino Ver Mensaje
... estoy ejecutando un Jframe que tiene todo el formulario a registrar un producto y en la parte del proveedor (que es un JComboBox editable) si no existe el proveedor llamar al JDialog para que lo registre.

Una vez que ya introduje los datos (y aqui es adonde esta mi problema) es que agarre el valor del Proveedor que introduje en el JDialog y lo almacene en el JComboBox del JFrame padre. ...
Por ejemplo:

Un JDialog simple, lo único que tiene adentro es un TextField para poder ingresar un nombre; lo único que hace ese JDialog es desplegar un espacio vacío para que puedas ingresar un dato que vamos a pasar al JComboBox editable del JFrame padre:

Código Java:
Ver original
  1. public class MyJDialog extends javax.swing.JDialog {
  2.  
  3.     public javax.swing.JTextField jTextField1;
  4.  
  5.     public MyJDialog(java.awt.Frame parent, boolean modal) {
  6.         super(parent, modal);
  7.         initComponents();
  8.     }
  9.  
  10.     private void initComponents() {
  11.         setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
  12.         jTextField1 = new javax.swing.JTextField();
  13.         jTextField1.setText("Hello");
  14.         getContentPane().add(jTextField1, java.awt.BorderLayout.CENTER);
  15.         pack();
  16.     }
  17.  
  18. }

Como ya tenemos el JDialog ahora vamos a crear un JFrame con el JComboBox editable y en este caso, a forma de ejemplo, va a mostrar el JDialog y va a pasar el valor ingresado solamente cuando se presione la tecla Enter.

Es decir, cuando presiones la tecla Enter en el JComboBox entonces va a mostrar el JDialog, y al cerrar el JDialog entonces va a mostrar el valor que se ingresó en el espacio vacío del diálogo en el JComboBox del JFrame. (Para cerrarlo tendrás que usar la X del ícono de control de la ventana en este ejemplo.)

Código Java:
Ver original
  1. ...
  2.             MyJDialog dialog = new MyJDialog(this, true);
  3.             dialog.setVisible(true);
  4.             jComboBox1.addItem(dialog.jTextField1.getText());
  5.             jComboBox1.setSelectedItem(dialog.jTextField1.getText());
  6. ...

Y el código del JFrame completo:

Código Java:
Ver original
  1. public class MyJFrame extends javax.swing.JFrame {
  2.  
  3.     private javax.swing.JComboBox jComboBox1;
  4.  
  5.     public MyJFrame() {
  6.         initComponents();
  7.     }
  8.  
  9.     private void initComponents() {
  10.         setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
  11.         jComboBox1 = new javax.swing.JComboBox();
  12.         jComboBox1.setEditable(true);
  13.         jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[]{"Item 1", "Item 2", "Item 3", "Item 4"}));
  14.         jComboBox1.getEditor().getEditorComponent().addKeyListener(new java.awt.event.KeyAdapter() {
  15.             public void keyReleased(java.awt.event.KeyEvent evt) {
  16.                 jComboBox1KeyReleased(evt);
  17.             }
  18.         });
  19.         getContentPane().add(jComboBox1, java.awt.BorderLayout.CENTER);
  20.         pack();
  21.     }
  22.  
  23.     private void jComboBox1KeyReleased(java.awt.event.KeyEvent evt) {
  24.         if (evt.getKeyChar() == java.awt.event.KeyEvent.VK_ENTER) {
  25.             MyJDialog dialog = new MyJDialog(this, true);
  26.             dialog.setVisible(true);
  27.             jComboBox1.addItem(dialog.jTextField1.getText());
  28.             jComboBox1.setSelectedItem(dialog.jTextField1.getText());
  29.         }
  30.     }
  31.  
  32.     public static void main(String[] args) {
  33.         java.awt.EventQueue.invokeLater(new Runnable() {
  34.             public void run() {
  35.                 new MyJFrame().setVisible(true);
  36.             }
  37.         });
  38.     }
  39.  
  40. }

Ahora, prueba a crear el JDialog y el JFrame en un proyecto, y mira como pasé el valor del JDialog.JTextField al JFrame.JComboBox, y si tienes alguna duda específica consulta de nuevo, porque no sé que parte es la que no entendiste anteriormente.

Saludos,