• Lunes 29 de Abril de 2024, 21:14

Autor Tema:  Como Pasar Parametros A Un Jframe Con Netbeans ?¿  (Leído 18210 veces)

musrha

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Como Pasar Parametros A Un Jframe Con Netbeans ?¿
« en: Viernes 30 de Noviembre de 2007, 18:27 »
0
Pues el tema es como dice el título que desde un formulario JFrame, hago una llamada a otro JFrame distinto, este nuevo realiza una insercion en la Base de Datos(BD) y ha de devolver ese objeto insertado en la BD al cerrarse. El problema esq Netbeans te define por defecto los JFrames y los eventos sin parametros y nose bien como meterlos.

Siempre se podria hacer el apaño de usar un fichero temporal donde guardar la informacion pero me parece poco viable y mas cutre.

Si alguien me puede solucionar el problemita o guiarme se lo agradeceria mucho.



Edito:Otra opción que se me ha ocurrido es definiendo alguna variable "static" para que cuando la ventana se cierra se conserve el valor, pero parece no funcionar. Hay algun modo de al abrir un JFrame desde otro, hacer que el q lanza al segundo se "bloquee"?? para que no siga ejecutando código. Gracias ^^

logicaemp

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: Como Pasar Parametros A Un Jframe Con Netbeans ?¿
« Respuesta #1 en: Sábado 1 de Diciembre de 2007, 04:55 »
0
NetBeans crea este código en el constructor de el JFrame:

Código: Text
  1.     public MyFrame() {
  2.         initComponents();
  3.     }
  4.  
  5.  
   
para pasarle parametros al constructor solo tienes que
copiar el constructor que crea NetBeans por defecto, a
uno nuevo:

Código: Text
  1.     ---------- MyFrame.java ----------
  2.     // extends javax.swing.JFrame
  3.     Habitacion temp;
  4.  
  5.     public MyFrame(Habitacion temp) {
  6.         initComponents();
  7.         setLocationRelativeTo(null);
  8.         this.temp = temp;
  9.         this.temp.x = 25;
  10.     }
  11.  
  12.  
   
de esta forma ya puedes usar el objecto "habitacion"
dentro de MyFrame donde sea, y todos los cambios
en las propiedades de ese objecto se van a ver
reflejadas en el principal, por ejemplo, para llamar
el JFrame:

Código: Text
  1.     ---------- MyMainFrame.java ----------
  2.     // extends javax.swing.JFrame
  3.     habitacion temp;
  4.  
  5.     public MyMainFrame() {
  6.         temp = new habitacion();
  7.     }
  8.     public button_actionlistener(...evt) {
  9.         temp.x = 10;
  10.         new MyFrame(temp).show(); // crea el objeto, lo muestra y cambia a 25
  11.         // aquí el programa sigue corriendo sin detenerse. ***********
  12.         System.out.println(temp.x); // 25
  13.     }
  14.  
  15.  
el problema es que el programa seguiría ejecutándose,
y solo en el constructor podrías cambiar los valores.

Para que pueda mostrar una ventana y el programa se dentenga y -- se "bloquee"--,
debes usar una ventana "modal" JDialog en lugar de JFrame. Puedes probar
este ejemplo de JDialog.

Código: Text
  1. ---------- example.java ----------
  2. public class example {
  3.  
  4.     public final static long serialVersionUID = 40974097;
  5.  
  6.     public static void main(String[] args) {
  7.         javax.swing.SwingUtilities.invokeLater(new Runnable() {
  8.             public void run() {
  9.                 habitacion temp = new habitacion(0);
  10.                 System.out.println("VALOR DE HABITACION ANTES : " + temp.x); // *** 0 ***
  11.  
  12.                 new dialog(null, true, temp).setVisible(true);
  13.                 System.out.println("VALOR DE HABITACION AHORA : " + temp.x); // *** 25 ***
  14.             }
  15.         });
  16.     }
  17. }
  18.  
  19. ---------- dialog.java ----------
  20. public class dialog extends javax.swing.JDialog {
  21.  
  22.     public final static long serialVersionUID = 40964096;
  23.     private habitacion temp;
  24.  
  25.     public dialog(java.awt.Frame parent, boolean modal, habitacion temp) {
  26.         super(parent, modal);
  27.         setLocationRelativeTo(parent);
  28.  
  29.         setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
  30.         setTitle("DIALOG DE EJEMPLO");
  31.  
  32.         javax.swing.JButton jButton1 = new javax.swing.JButton("<html><h1>PRESIONE PARA SALIR</h1></html>");
  33.         jButton1.addActionListener(new java.awt.event.ActionListener() {
  34.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  35.                 jButton1ActionPerformed(evt);
  36.             }
  37.         });
  38.  
  39.         add(jButton1);
  40.         pack();
  41.  
  42.         this.temp = temp;
  43.     }
  44.  
  45.     private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
  46.         this.temp.x = 25;
  47.         this.dispose();
  48.     }
  49. }
  50.  
  51. ---------- habitacion.java ----------
  52. public class habitacion { // esta es una clase donde se guardan los datos
  53.   public int x;
  54.   public habitacion(int x) {
  55.     this.x = x;
  56.   }
  57. }
  58.