Java nos provee con todas las herramientas para construir un wizard, y el componente central es CardLayout. El CardLayout puede contener múltiples componentes, pero solo uno puede ser visible en un determinado momento -- y ese componente visible ocupará el área entera del panel que lo contiene. Aún más, a través de una interfaz podemos especificar qué panel se está desplegando. Para un wizard, entonces, necesitamos construir un panel usando el layout manager CardLayout y luego agregar los paneles que deseamos. Cuando el usuario avanza a través del wizard al pulsar en alguno de los botones ("Back" o "Next") entonces simplemente cambiamos el panel mostrado.Lo siguiente a considerar es el orden de navegación. Algunos wizards operan desde el inicio al final en un orden predefinido, pero la mayoría basa este orden a partir de la selección del usuario. Para facilitar esta funcionalidad, he creado una interfaz Navigation y otra NavigationFactory que crea clases que implementan Navigation. El Listado 1 muestra el código para la interfaz Navigation.
public interface Navigator
{
/**
* Constant representing the "Back" button
*/
public static final int BACK = 1;
/**
* Constant representing the "Next" button
*/
public static final int NEXT = 2;
/**
* Initializes the Screen navigator
*
* @param parent The JWizard that owns the navigator
*/
public void init( JWizard parent );
/**
* Returns the name of the next screen to display
*
* @param currentName The name of the current screen
* @param direction The direction that the user is requesting to
* go: BACK or NEXT
*/
public String getNextScreen( String currentName, int direction );
}
La interfaz Navigator define dos constantes que representan los botones "Back" y "Next". Define un constructor que es una referencia al JWizard que es dueño de este Navigator y el método getNextScreen() que informa al JWizard el nombre de la siguiente pantalla a mostrar. El JWizard pasa al Navigator el nombre de la pantalla actual, el cual es usado por Navigator para obtener acceso a través del padre JWizard, y luego evaluar los seteos de la pantalla para determinar la próxima pantalla a mostrar.Proveo una clase DefaultNavigator que implementa la interfaz Navigator y simplemente camina a través de las pantallas del wizard desde inicio hasta el final. Entonces, si no deseamos hacer variable la navegación, la funcionalidad ya la tenemos implementada. La elección de qué Navigator será utilizado por el JWizard está definido por la clase NavigatorFactory. Esta es una implementación del patrón factory, que pasa la elección de una clase de implementación a tiempo de ejecución, en vez de requerir esta decisión en tiempo de compilación. De este modo, podemos sustituir nuevas implementaciones sin tener que modificar el código. La clase NavigatorFactory utiliza la siguiente propiedad de sistema para determinar qué Navigator utilizar:
com.javasrc.jwizard.navigator.class
Podemos setear esta propiedad utilizando el JRE:
java -Dcom.javasrc.jwizard.navigator.class=com. javasrc.jwizard.navigator.DefaultNavigator YourApp
El aspecto final del JWizard que merece explicación es el mecanismo de notificación de eventos. El JWizard provee una interfaz listener que puede ser implementada por nuestras clases para ser notificados cuando se han producido cambios al wizard. La interfaz WizardListener provee tres métodos, como se muestra en el Listado 2.
package com.javasrc.jwizard.event;
public interface WizardListener extends java.util.EventListener
{
public void wizardCancelled( WizardEvent we );
public void wizardComplete( WizardEvent we );
public void wizardScreenChanged( WizardEvent we );
}
A través de estas notificaciones, podemos tomar acciones cuando el wizard a cambiado de pantalla, ha sido finalizado, o ha sido cancelado.
Usuarios que han visto este tema también han visto...
- Instalación de GWT 1.5
- ¿Qué necesito para programar en Java?
- ¿Qué es el path y el classpath de Java?
- Obtener información de clases Java en aplicaciones web
- Frame lookup Swing en Java
Información legal | Política de Privacidad | Contacte con nosotros
Otro proyecto de Factoría de Internet. Copyright© 2003-2011 Factoría de Internet S.L.. Todos los derechos reservados.