viernes, 19 de diciembre de 2014

Ejemplo: JavaSE, aplicación MVC - X

Hola jabatos:

He aquí la conclusión ( ¡¡ por fin !! ) de este ejemplo. Solo nos quedan retoques...

Primeramente en la clase MainWindow, hemos de finalizar el método changeMainPanel, para que nos permita cambiar de panel de componente entre PanelCreacion(), PanelIdentificacion() y TabbedPrincipal().

public JFrame changeMainPanel(JComponent newComponent, JPanel title) {
this.north=title;
this.center= newComponent;
window=makeWindows(this.width,this.height,EjemploSwing.getEnter().getMainFrame().getY(), EjemploSwing.getEnter().getMainFrame().getX(), this.title, this.north, this.east, this.west, newComponent,this.south);
return window;
}

La línea que hemos incorporado hace básicamente lo siguiente: recupera el tamaño de la pantalla que habíamos definido al crearla, toma las ubicaciones actuales (y,x) donde se halla colocada la pantalla, y añadimos los componentes, tanto los anteriores (los que no cambian) como los recién suministrados,al objeto de construir una nueva pantalla JFrame y asignársela al componente window.

Hay que tener en cuenta que window en realidad es un objeto instanciado en EnterSandMan, y que éste a su vez es un componente static instanciado por EjemploSwing. Lo cual nos lleva a que el objeto window es un componente static por derivación y es por ello que "recuerda" su título y los componentes que le suministramos cuando fue creado.


Siguiente cosa, cambios en el panelCreación:
Teníamos pendiente de implementar el cambio de pantalla. Debemos incluir dentro del actionPerformed la invocación del método siguiente:
if (source.equals("Volver")) {
// volvemos a la pantalla de identificacion
EjemploSwing.getEnter().showIdentificationApp();
}

Y también en:
if (userDAO.createUser(usuario)) {
JOptionPane.showMessageDialog(null, "Usuario grabado correctamente", "Grabación de usuarios", JOptionPane.INFORMATION_MESSAGE);
// volvemos a la pantalla de identificacion
EjemploSwing.getEnter().showIdentificationApp();
} else {
JOptionPane.showMessageDialog(null, "Error grabando el usuario", "Grabación de usuarios", JOptionPane.ERROR_MESSAGE);
}

La explicación de la instrucción incluida es la siguiente: Hay que invocar el JFrame "actual", y eso se consigue desde la clase que lo creó "EjemploSwing". Recordad que en esa clase construimos un método getEnter() que nos proporciona acceso al JFrame, y a través de él a sus métodos y propiedades ;-). Hay otras formas, pero yo prefiero ésta...


Y sigamos por el panelIdentificacion:
Teníamos pendiente de implementar el cambio de pantalla. Debemos incluir dentro del actionPerformed:
  // crear nuevo usuario if (source.equals("Nuevo")) { EjemploSwing.getEnter().createUserApp(); }

Y también en:
    if (activeUser!=null) { // usuario identificado, pasamos el control al main EjemploSwing.getEnter().showTabbedPane(activeUser); } else { JOptionPane.showMessageDialog(null, "No existe el usuario/password suministrado", "Identificación de usuarios", JOptionPane.ERROR_MESSAGE); }

El proceso es semejante al caso anterior, pero aquí nos encontramos con dos posibilidades. Si queremos crear un usuario se emplearía el createUserApp(). Y si hemos procedido a la identificación, entonces hay que invocar el método showTabbedPane() con el parámetro del objeto Usuario conteniendo la información a mostrar.

Ya casi hemos terminado. Solamente nos quedaría (S.E.u.O.) un pequeño retoque. Tenemos varios JOptionPane en las clases PanelCreacion(), PanelIdentificacion(), PanelPersonal() y PanelProfesional(); esos JOptionPane están referenciados al objeto null, o sea, que salen en mitad de la pantalla de nuestro equipo, independientemente de donde tengamos ubicada la aplicación. Para evitar ese inadecuado comportamiento, hay que cambiar todos los
null por ==> EnterSandMan.getMainFrame()
lo cual habilita para que salgan centradas las pantallas con mensajes en nuestro JFrame principal.

Ya está. Creo... bueno, el aspecto de nuestro proyecto es el siguiente:




Fin de proyecto. Ejecutado, probado y funciona... el users.dat contendrá los datos de los usuarios que vayamos creando, en formato txt.

Gracias por vuestra paciencia...

Anterior tema                                                                                         

No hay comentarios:

Publicar un comentario