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

Comunicación de datos entre JFrame

Estas en el tema de Comunicación de datos entre JFrame en el foro de Java en Foros del Web. Hola, quisiera preguntaros unaa duda. Os explico mi caso: Tengo una aplicación con un JFrame1 inicial que pide unos datos (datos1) sobre una especie de ...
  #1 (permalink)  
Antiguo 16/05/2013, 05:43
 
Fecha de Ingreso: febrero-2013
Mensajes: 2
Antigüedad: 11 años, 2 meses
Puntos: 0
Pregunta Comunicación de datos entre JFrame

Hola, quisiera preguntaros unaa duda. Os explico mi caso:

Tengo una aplicación con un JFrame1 inicial que pide unos datos (datos1) sobre una especie de pez. Al darle al botón next, abre un segundo JFrame2 que pide otros datos (datos2) sobre la misma especie. Al darle al botón next, llama a un JFrame3 donde se obtienen los resultados a partir de datos1 y datos2. Al inicio del código del JFrame3, se realizan unos cálculos en Matlab (software de matemáticas) con los datos de la especie, obtenidos desde el JFrame1 y JFrame2.

Tengo dudas a la hora de recoger los datos en el JFrame3. Los JFrame1 y JFrame2 tienen sus métodos getDatos1 y getDatos2. Pero desde el JFrame3, si quiero llamar estos métodos, tendría que instanciar a la fuerza los JFrame1 y JFrame2, ¿verdad? Si desde el JFrame3 los instancio, se crearían los JFrame nuevos mediante el constructor, pero sin los datos introducidos anteriormente, ¿verdad?

En resumen:

JFrame1 pide datos1. Tras pinchar en Next, llama a JFrame2 y hace dispose de sí mismo.
JFrame2 pide datos2. Tras pinchar en Next, llama a JFrame3 y hace dispose de sí mismo.
JFrame3 necesita los datos de JFrame1 y JFrame2 para obtener unos resultados.



Lo que se me ocurrió es hacer una clase Datos, con su método setDatos1 y setDatos2. Así en el JFrame1 instancio un objeto Datos y le paso datos1 con setDatos1. Pero en el JFrame2 para llamar a setDatos2, tendría que volver a instanciar el objeto, por lo que al ser recién creado carecería de los datos introducidos en setDatos1...


¿Se podría hacer lo que quiero hacer? ¿Cuál sería la mejor forma? Espero haberme explicado claramente


Muchísmas gracias y un saludo
  #2 (permalink)  
Antiguo 16/05/2013, 13:28
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Comunicación de datos entre JFrame

Hola,

Cita:
Iniciado por pazovic Ver Mensaje
... Tengo una aplicación con un JFrame1 inicial que pide unos datos (datos1) sobre una especie de pez. Al darle al botón next, abre un segundo JFrame2 que pide otros datos (datos2) sobre la misma especie. Al darle al botón next, llama a un JFrame3 donde se obtienen los resultados a partir de datos1 y datos2. Al inicio del código del JFrame3, se realizan unos cálculos en Matlab (software de matemáticas) con los datos de la especie, obtenidos desde el JFrame1 y JFrame2. ...
¿Si los datos están relacionados porque no mejor utilizas un solo Frame con diferentes pestañas? Para ese objetivo existe el layout CardLayout o el componente JTabbedPane.

Cita:
Iniciado por pazovic Ver Mensaje
... ¿Se podría hacer lo que quiero hacer? ¿Cuál sería la mejor forma? ...
Como haces un dispose del objeto Frame anterior tendrías que pasar el objeto Datos entre los diferentes Frames consecutivamente, pero el objeto Datos debería de tener todo el registro completo de los datos previos. Es decir, cada Frame llena los datos que le corresponden en el objeto Datos y pasa al siguiente Frame ese objeto, por lo tanto cada vez que avance va a contener todos los datos de los Frames anteriores, en el último deberá estar lleno.

En el caso que solamente se va a presentar un solo Frame1 a la vez, es decir, no puede existir el Frame1 dos veces consecutivamente en la pantalla, y por consiguiente, tampoco los siguientes Frames; podrías recurrir al patrón Singletón en el el objeto Datos, por su naturaleza al ser static lo podrás accesar desde cualquier lugar, observando que deberás limpiar el objeto Datos al finalizar cada secuencia de operaciones, al terminar el Frame3 o al iniciar el Frame1.

La ventaja de esta última opción es que podrías crearlo de forma que avance o retroceda en los Frames sin complicaciones, adicionalmente que la programación será mucho mas sencilla. Las desventajas son que no puedes hacer dos procedimientos iguales al mismo tiempo, es decir, que no puedes tener abiertos dos Frame1 porque sobreescribirían los datos (por su naturaleza el patrón Singleton es static), y adicionalmente que no podrías accesar el objeto Singletón Datos desde dos hilos al mismo tiempo sin sincronización.

Espero que sea de alguna ayuda,

Saludos,

Etiquetas: jframe
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 04:00.