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

Pasar objeto de un Frame a otro

Estas en el tema de Pasar objeto de un Frame a otro en el foro de Java en Foros del Web. Buenas, estoy haciendo una Java Application Swing, con JDeveloper. Es un ejemplo sencillo, se trata de un Consejo de Departamento, con una lista de miembros ...
  #1 (permalink)  
Antiguo 16/12/2012, 07:32
 
Fecha de Ingreso: diciembre-2008
Mensajes: 116
Antigüedad: 10 años, 10 meses
Puntos: 0
Pasar objeto de un Frame a otro

Buenas, estoy haciendo una Java Application Swing, con JDeveloper. Es un ejemplo sencillo, se trata de un Consejo de Departamento, con una lista de miembros (Profesores y Alumnos), un director, de tipo Profesor, y un secretario, de tipo Profesor también. Tengo hecha las clases necesarias (Profesor, Alumno, Consejo) con sus constructores, atributos, getters y setters correspondientes. Esta es la base, ahora estoy creando la aplicación de escritorio para poder gestionarlo.
Tengo el Frame principal, donde se inicializan los componentes (toolBar, panelCenter, menuBar), pero de momento sin labels ni textfields ni nada. En menuBar tengo un elemento "Nuevo Consejo", que cazo el evento cuando pincho y lanzo otro Frame, nuevoConsejo, donde tengo un textField, para el nombre del Consejo, y un botón de OK, y cuando pico, creo un nuevo objeto tipo Consejo.
Código:
    private void jButton1_actionPerformed(ActionEvent e) {
        String nombre = textNombre.getText();
        if (nombre.isEmpty()) {
            JOptionPane.showMessageDialog(null, "Campo 'Nombre' es necesario para crear el Consejo.");
        } else {
            ConsejoDepartamento con = new ConsejoDepartamento(nombre);
        }
    }
No se si hasta ahora está bien hecho, pero la pregunta sería ¿como paso ese objeto al Frame principal, para así mostrar varios botones como "Añadir Profesor", "Añadir Alumno", etc, e interactuar con él?
  #2 (permalink)  
Antiguo 16/12/2012, 08:55
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.773
Antigüedad: 15 años, 1 mes
Puntos: 454
Respuesta: Pasar objeto de un Frame a otro

A ConsejoDepartamento ponle los métodos que necesites para interactur con él. En vez de declararlo como variable local dentro del else, decáralo como atributo del frame principal

Código java:
Ver original
  1. public class FramePricipal extends ... {
  2.    ConsejoDepartamento con = null;
  3.    ...
  4.    private void jButton1_actionPerformed(ActionEvent e) {
  5.         String nombre = textNombre.getText();
  6.         if (nombre.isEmpty()) {
  7.             JOptionPane.showMessageDialog(null, "Campo 'Nombre' es necesario para crear el Consejo.");
  8.         } else {
  9.             if (con == null) {
  10.                 con = new ConsejoDepartamento(nombre);
  11.             }
  12.              // llama a los métodos de con que has creado, aquí o en cualquier otro sitio de frame principal.
  13.         }
  14.     }
  15. }

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 17/12/2012, 05:17
 
Fecha de Ingreso: diciembre-2008
Mensajes: 116
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Pasar objeto de un Frame a otro

Cita:
Iniciado por chuidiang Ver Mensaje
A ConsejoDepartamento ponle los métodos que necesites para interactur con él. En vez de declararlo como variable local dentro del else, decáralo como atributo del frame principal

Código java:
Ver original
  1. public class FramePricipal extends ... {
  2.    ConsejoDepartamento con = null;
  3.    ...
  4.    private void jButton1_actionPerformed(ActionEvent e) {
  5.         String nombre = textNombre.getText();
  6.         if (nombre.isEmpty()) {
  7.             JOptionPane.showMessageDialog(null, "Campo 'Nombre' es necesario para crear el Consejo.");
  8.         } else {
  9.             if (con == null) {
  10.                 con = new ConsejoDepartamento(nombre);
  11.             }
  12.              // llama a los métodos de con que has creado, aquí o en cualquier otro sitio de frame principal.
  13.         }
  14.     }
  15. }

Se bueno.
Gracias por tu respuesta chuidiang, pero creo que no lo expliqué del todo bien. Ese evento cazado que muestro el código está dentro del segundo Frame, no del Frame principal. El Frame principal no tiene nada, solo el menuBar, donde pincho en Archivo->Nuevo Consejo. Esto crea el segundo Frame, donde tengo el formulario, cazo el evento y creo el objeto. Lo que quiero luego es que, creado ese objeto, se "actualize" el Frame principal con los datos del objeto y con botones para añadir/eliminar miembros, etc. Si lo declaro como atributo del Frame principal, no lo reconoce dentro del Segundo Frame.
  #4 (permalink)  
Antiguo 17/12/2012, 05:43
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.773
Antigüedad: 15 años, 1 mes
Puntos: 454
Respuesta: Pasar objeto de un Frame a otro

Hola:

Entiendo que jButton1_actionPerformed(ActionEvent e) está en el FramePrincipal y es lo que se ejecuta cuando en el FramePrincipal pinchas el botón "Nuevo Consejo". Si es así, lo que te he puesto vale perfectamente, una vez el usuario rellene los datos en la ventana ConsejoNuevo y es un JDialog modal, puedes hacer esto

Código java:
Ver original
  1. public class FramePricipal extends ... {
  2. * *ConsejoDepartamento con = null;
  3. * *...
  4. * *private void jButton1_actionPerformed(ActionEvent e) {
  5. * * * * String nombre = textNombre.getText();
  6. * * * * if (nombre.isEmpty()) {
  7. * * * * * * JOptionPane.showMessageDialog(null, "Campo 'Nombre' es necesario para crear el Consejo.");
  8. * * * * } else {
  9. * * * * * * if (con == null) {
  10. * * * * * * * * con = new ConsejoDepartamento(nombre);
  11. * * * * * * }
  12.             con.setVisible(true); // Esta llamada si con es JDialog modal, quedará bloqueada hasta que el usuario cierre la ventana.
  13.  
  14.             // Esto es lo que debes poner, con tus propios métodos para tus datos.
  15.             elementosDelPanelPrincipal.setDatos (con.getDatos());
  16. * * * * }
  17. * * }
  18. }

Si no es un JDialog modal, entonces se compilica un poco, después del con.setVisible(true) tienes que añadir un addWindowListener() para esperar que el usuario cierre la ventana y dentro de ese windowlistener llamar al elementosDelPanelPrincipal.setDatos (con.getDatos());

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 18/12/2012, 14:10
Avatar de jcMouse  
Fecha de Ingreso: noviembre-2009
Ubicación: Bolivia
Mensajes: 116
Antigüedad: 10 años
Puntos: 9
Respuesta: Pasar objeto de un Frame a otro

bien podrías utilizar una variable STATIC :) lo mas cómodo y para vagos :=D

o pasarle el objeto al otro frame como atributo en el constructor, si el objeto claro no es una interfaz.

Otra cosa que podrías hacer es crear un JPanel aparte donde declares todos tus componentes gráficos textos, botones, tablas. Cuando llamas a ese jpanel desde "Nuevo Consejo" y utilizar actionevent, mouselistener, actioncomand, etc para manipular el componente desde tu interfaz principal :/ no se si se entendio :)

Porque no haces uso de formularios modales MDI :)

se malo ;)
__________________
Problem?
Estoy aquí
Foro Code Army

Etiquetas: escritorio, frame, objeto, swing, aplicaciones
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 23:48.