Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Como pasar datos entre JFrames?

Estas en el tema de Como pasar datos entre JFrames? en el foro de Java en Foros del Web. Buenas k tal!, Tengo la siguiente consulta...espero me puedan ayudar con esto: Tengo una aplicacion Java que consiste en dos JFrames uno el principal(Frame01) y ...
  #1 (permalink)  
Antiguo 04/02/2011, 17:15
 
Fecha de Ingreso: enero-2011
Mensajes: 13
Antigüedad: 13 años, 3 meses
Puntos: 0
Como pasar datos entre JFrames?

Buenas k tal!, Tengo la siguiente consulta...espero me puedan ayudar con esto:

Tengo una aplicacion Java que consiste en dos JFrames uno el principal(Frame01) y el otro el secundario(Frame02) El principal consiste en un JTextLabel(Dato) y un JBotton(Abre_Frame02), el secundario solo contiene un JTextLabel (Recibir)
Como puedo hacer para al presionar el boton(Abre_Frame02) el texto introducido en el JTextLabel(Dato) antes de precionar!!, aparezca el texto en el JTextLabel (Recibir) del JFrame02. uso el Netbeans.....Gracias de antemano
  #2 (permalink)  
Antiguo 04/02/2011, 20:44
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: Como pasar datos entre JFrames?

Hola,

Básicamente es que siempre tengas la referencia al formulario y los objetos,
Es decir, cuando creas el formulario guardas la referencia en una variable,

Código Java:
Ver original
  1. public JFrame2 frame;
  2. ...
  3.     frame = new JFrame2();
  4.     frame.setVisible(true);

Por lógica esa variable debe ser declarada en algún lugar donde sea visible por el botón, y cuando creas el botón agregas en NetBeans (usando el botón derecho del mouse y buscas Events->Action en el menú contextual) el evento que NetBeans genera automáticamente,

Código Java:
Ver original
  1. jButton1.addActionListener(new java.awt.event.ActionListener() {
  2.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  3.                 jButton1ActionPerformed(evt);
  4.             }
  5.         });

Y te coloca el cursor en el espacio para escribir el código para manejar del evento,

Código Java:
Ver original
  1. private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
  2.         frame.getjLabel1().setText(jLabel1.getText());
  3.     }

En este caso {frame.getjLabel1()} es un método getter que te tiene que devolver el JLabel del formulario2, que tienes que crear con NetBeans manualmente o usando Refactor->Encapsulate Fields,

Saludos,
  #3 (permalink)  
Antiguo 04/02/2011, 21:25
 
Fecha de Ingreso: enero-2011
Mensajes: 13
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Como pasar datos entre JFrames?

Cita:
Iniciado por HackmanC Ver Mensaje
Hola,

Básicamente es que siempre tengas la referencia al formulario y los objetos,
Es decir, cuando creas el formulario guardas la referencia en una variable,

Código Java:
Ver original
  1. public JFrame2 frame;
  2. ...
  3.     frame = new JFrame2();
  4.     frame.setVisible(true);

Por lógica esa variable debe ser declarada en algún lugar donde sea visible por el botón, y cuando creas el botón agregas en NetBeans (usando el botón derecho del mouse y buscas Events->Action en el menú contextual) el evento que NetBeans genera automáticamente,

Código Java:
Ver original
  1. jButton1.addActionListener(new java.awt.event.ActionListener() {
  2.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  3.                 jButton1ActionPerformed(evt);
  4.             }
  5.         });

Y te coloca el cursor en el espacio para escribir el código para manejar del evento,

Código Java:
Ver original
  1. private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
  2.         frame.getjLabel1().setText(jLabel1.getText());
  3.     }

En este caso {frame.getjLabel1()} es un método getter que te tiene que devolver el JLabel del formulario2, que tienes que crear con NetBeans manualmente o usando Refactor->Encapsulate Fields,

Saludos,

Gracias por tu respuesta también e estado probando con declarar una variable static en el Frame01 y luego desde el Frame02 e podido llamar a dicha variable y me a funcionado.....

Una consulta como se usa y para que sirve la opción: Refactor->Encapsulate Fields
  #4 (permalink)  
Antiguo 05/02/2011, 10:02
 
Fecha de Ingreso: abril-2008
Mensajes: 16
Antigüedad: 16 años
Puntos: 0
Respuesta: Como pasar datos entre JFrames?

Esa opcion que mencionas sirve para encapsular las variables que defines como atributos de la clase y crear sus metodos de acceso, este uso es relacionado con la programacion orientada a objetos para que los atributos sean privados y se accese a ellos mediante los metodos publicos.
Espero te sirva mi comentario
  #5 (permalink)  
Antiguo 09/02/2011, 07:30
Avatar de hwongu  
Fecha de Ingreso: junio-2008
Ubicación: Trujillo
Mensajes: 93
Antigüedad: 15 años, 10 meses
Puntos: 5
Respuesta: Como pasar datos entre JFrames?

Puedes poner las variables de forma "public static" para el llamado de las variables
  #6 (permalink)  
Antiguo 09/02/2011, 11:42
 
Fecha de Ingreso: enero-2011
Mensajes: 13
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Como pasar datos entre JFrames?

Cita:
Iniciado por hwongu Ver Mensaje
Puedes poner las variables de forma "public static" para el llamado de las variables
Gracias por ayudar con el tema... ya lo pude hacer de esta forma:

public static String Dato

Última edición por davidem123; 09/02/2011 a las 11:52
  #7 (permalink)  
Antiguo 12/02/2011, 08:32
 
Fecha de Ingreso: febrero-2011
Mensajes: 27
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Como pasar datos entre JFrames?

Este problema se me ha presentado a mi infinidad de veces y la solución que me propuso mi profesor me resultó bastante cómoda, y es crear una clase que utilice el patrón de diseño Singleton, de esta forma tendrás acceso siempre y en todo momento al objeto singleton... sea este tu aplicación al completo o solo un frame o lo que quieras que sea...
  #8 (permalink)  
Antiguo 12/02/2011, 10:40
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: Como pasar datos entre JFrames?

Cita:
Iniciado por hwongu Ver Mensaje
Puedes poner las variables de forma "public static" para el llamado de las variables
¿static? ¿Vas a declarar los controles estáticos? Las variables estáticas se comparten entre todas las instancias, si creas dos instancias del mismo formulario van a compartir el mismo control (botón, texto, etc.) ... y seguramente no va a funcionar correctamente.

Cita:
Iniciado por CarlosAP Ver Mensaje
Este problema se me ha presentado a mi infinidad de veces y la solución que me propuso mi profesor me resultó bastante cómoda, y es crear una clase que utilice el patrón de diseño Singleton, de esta forma tendrás acceso siempre y en todo momento al objeto singleton... sea este tu aplicación al completo o solo un frame o lo que quieras que sea...
¿Singleton? Por lo menos corregiría el problema de las variables estáticas, puesto que solo se puede crear una instancia del formulario. ¿Y si quiero varias instancias del mismo formulario?


Los controles del formulario son miembros de la clase y solamente deben ser expuestos de una manera que no se pueda modificar la instancia del control, por ejemplo:

Código Java:
Ver original
  1. public javax.swing.JTextField getjTextField1() {
  2.         return jTextField1;
  3.     }

Saludos,

El código completo:

Main.java
Código Java:
Ver original
  1. public class Main {
  2.     public static void main(String[] args) {
  3.         new JFrame1().setVisible(true);
  4.     }
  5. }

JFrame1.java
Código Java:
Ver original
  1. public class JFrame1 extends javax.swing.JFrame {
  2.  
  3.     private javax.swing.JButton jButton1;
  4.     private javax.swing.JTextField jTextField1;
  5.     private JFrame2 frame2;
  6.  
  7.     public JFrame1() {
  8.         initComponents();
  9.         this.frame2 = new JFrame2();
  10.         this.frame2.setVisible(true);
  11.     }
  12.  
  13.     private void initComponents() {
  14.         setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
  15.  
  16.         jTextField1 = new javax.swing.JTextField();
  17.         jTextField1.setText("Hello World!");
  18.  
  19.         jButton1 = new javax.swing.JButton();
  20.         jButton1.setText("jButton1");
  21.         jButton1.addActionListener(new java.awt.event.ActionListener() {
  22.             @Override
  23.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  24.                 jButton1ActionPerformed(evt);
  25.             }
  26.         });
  27.  
  28.         getContentPane().add(jTextField1, java.awt.BorderLayout.CENTER);
  29.         getContentPane().add(jButton1, java.awt.BorderLayout.PAGE_END);
  30.         pack();
  31.         setLocationByPlatform(true);
  32.     }
  33.  
  34.     private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
  35.         frame2.getjTextField1().setText(jTextField1.getText());
  36.     }
  37. }

JFrame2.java
Código Java:
Ver original
  1. public class JFrame2 extends javax.swing.JFrame {
  2.  
  3.     private javax.swing.JTextField jTextField1;
  4.  
  5.     public JFrame2() {
  6.         initComponents();
  7.     }
  8.  
  9.     private void initComponents() {
  10.         setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
  11.  
  12.         jTextField1 = new javax.swing.JTextField();
  13.         jTextField1.setText("jTextField1");
  14.  
  15.         getContentPane().add(jTextField1, java.awt.BorderLayout.CENTER);
  16.         pack();
  17.         setLocationByPlatform(true);
  18.     }
  19.  
  20.     public javax.swing.JTextField getjTextField1() {
  21.         return jTextField1;
  22.     }
  23. }

Etiquetas: pasar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:08.