sábado, 9 de julio de 2016

033.- POO - Herencia - Cuadro De Diálogo Propio - Java y NetBeans


Reutilización de código

La gran ventaja de la Herencia es la posibilidad de aprovechar Clases ya creadas (bien sea por nosotros mismos o por otros programadores) para crear nuevas Clases. De esta forma, no tenemos que crear la nueva Clase desde el principio, y solo tenemos que añadir algunos cambios a la Clase original, sin que esta se vea afectada.

De esta manera, podemos tomar Clases de las librerías de Java y crear a partir de ellas nuevas Clases para nuestras necesidades específicas. Estas clases luego pueden ser incluidas fácilmente en futuros proyectos.


Cuadro de Diálogo Propio

Como ejemplo de todo esto, crearemos un cuadro de diálogo propio que puede ser usado muy a menudo en nuestros proyectos. Concretamente, será un cuadro de diálogo que nos permita introducir una fecha (día / mes / año).

Debes tener en cuenta que los cuadros de diálogo son objetos de la clase JDialog, por lo que este cuadro de diálogo propio tendrá que derivar (heredar) de la clase JDialog.

La clase JDialog se comporta como una ventana (un JFrame) así que su programación es relativamente sencilla.

Veremos el caso concreto de programar un Cuadro de Diálogo Propio a través del ejercicio que viene a continuación.



EJERCICIO GUIADO


  1. Crea un proyecto llamado Diálogo Propio Fecha, que tenga un paquete principal llamado paquetePrincipal y un JFrame llamado VentanaPrincipal:




  1. Para crear un cuadro de diálogo propio, debes hacer clic con el botón derecho del ratón sobre el paquete principal y activar la opción Nuevo – Otros. A través de esta opción accedemos a un menú desde donde podemos añadir a nuestro proyecto distintos tipos de clases.

 



  1. En la ventana que aparece, escogeremos en la parte izquierda la opción Swing GUI Forms, y en la parte derecha escogeremos la opción Formulario JDialog. Luego haz clic en el botón Siguiente.




  1. A continuación tendremos que indicar el nombre que tendrá la clase correspondiente a nuestro cuadro de diálogo propio. En nuestro caso llamaremos a esta clase DialogoFecha.




  1. Luego de pulsar el botón Finalizar observarás que se ha creado una nueva Clase dentro del proyecto llamada DialogoFecha.




  1. Es interesante que veas el código de esta clase. Haz doble clic sobre ella:




Si observas el código verás que es muy similar al de las Clases JFrame, es decir, a la de la clase de la ventana principal.

Debes observar que la clase DialogoFecha que vas a crear es heredada de JDialog, y también verás que hay un método constructor similar al de los JFrame, aunque con parámetros:




  1. Además, tenemos la ventaja de poder usar la ventana de diseño para crear nuestro cuadro de diálogo DialogoFecha:




  1. Usaremos la ventana de diseño para darle forma a nuestro cuadro de diálogo. Recuerda que la finalidad de este cuadro de diálogo será la de permitirle al usuario introducir una fecha. Diséñala para que quede así:




  1. Asigna un nombre a cada elemento:

-       El cuadro de texto para el día se llamará: txtDia
-       El cuadro de texto para el mes se llamará: txtMes
-       El cuadro de texto para el año se llamará: txtAnio
-       El botón Aceptar se llamará btnAceptar
-       El botón Cancelar se llamará btnCancelar



  1. Como ves, hasta ahora la creación de un cuadro de diálogo propio es algo muy sencillo, ya que es muy similar a la creación de una ventana. En este proceso (al igual que en la creación de una ventana) participa el concepto de herencia.

  1. Ahora hay que dotar a nuestro cuadro de diálogo de las propiedades y los métodos necesarios para que sea fácil de usar. Antes de programar todo esto, aquí tienes una descripción de lo que queremos añadir al cuadro de diálogo:


Propiedades:

          dia     -         entero
          mes    -         entero
          anio    -         entero
          botonPulsado         -         entero


Métodos:

          getFechaCorta()  

-       Este método devolverá una cadena (String) con la fecha en este formato:
                              dia/mes/año


          getFechaLarga()  

-       Este método devolverá una cadena con la fecha en el siguiente formato:
dia de mes(en letras) del año


          getBotonPulsado()

-       Este método devolverá el valor de la propiedad botonPulsado. Esta propiedad podrá tener un 0 o un 1. Tendrá un 0 si se pulsa el botón Cancelar, y un 1 si se pulsa el botón Aceptar.




  1. Bien, empecemos. Programar las propiedades es algo sencillo, ya que son simplemente variables globales de la clase DialogoFecha:




  1. Cuando el usuario pulse el botón Cancelar, el cuadro de diálogo de fecha debe introducir el valor 0 dentro de su propiedad botonPulsado, y el cuadro de diálogo se cerrará. Para programar esto, acude a la ventana de diseño y entra en el actionPerformed del botón btnCancelar.




Como puedes observar en el código, asigno el 0 a la propiedad botonPulsado y luego uso el método dispose para cerrar el cuadro de diálogo.



  1. Cuando el usuario pulse el botón Aceptar, el cuadro de diálogo de fecha debe introducir el valor de los JTextField  txtDia, txtMes y txtAnio en sus respectivas propiedades: dia, mes y anio. Luego, se debe introducir un 1 en la propiedad botonPulsado, y finalmente se cerrará el cuadro de diálogo.

Accede al evento actionPerformed del botón btnAceptar y programa lo siguiente:




  1. Ya hemos programado las acciones a realizar cuando se pulse el botón Aceptar y Cancelar. Ahora programaremos el resto de los métodos. Empezaremos por el método getFechaCorta.

El método getFechaCorta devolverá una cadena con la fecha en formato dia/mes/año. Para ello debes escribir este código dentro de la clase DialogoFecha. El mejor sitio puede ser debajo del método constructor.




Observa el código. Se unen las propiedades dia, mes y anio en una cadena, separadas por el símbolo “/”. Luego se devuelve la cadena.


  1. Ahora programaremos el método getFechaLarga. Este método devuelve la fecha con formato largo, usando el mes en letras. El método getFechaLarga tendrá el siguiente aspecto. Puedes programarlo a continuación del método del punto anterior:



Como puedes observar, se concatena el día en una cadena y luego, dependiendo del valor de la propiedad mes, se concatena un mes en letras. Finalmente se concatena la propiedad anio y se devuelve la cadena.


  1. Y ya para terminar con la programación de nuestra clase DialogoFecha, programaremos el método getBotonPulsado, que básicamente devuelve la propiedad botonPulsado, la cual contiene un 0 si se pulsó Cancelar y un 1 si se pulsó Aceptar. La programación de este método es muy sencilla:





La clase DialogoFecha está terminada. Gracias a ella podremos crear cuadros de diálogo en nuestros proyectos para introducir fechas. Para probar esta clase, usaremos nuestra ventana principal.


  1. Acude a la ventana principal, haciendo doble clic sobre ella en la ventana de proyectos:




  1. Diseña esta ventana para que tenga la siguiente forma:




El botón se llamará btnIntroducirFecha y la etiqueta con borde se llamará etiFecha.


  1. El programa funcionará de la siguiente forma:

-       Al pulsar el botón Introducir Fecha aparecerá un cuadro de diálogo del tipo DialogoFecha, donde el usuario introducirá una fecha.

-       Al pulsar Aceptar, dicha fecha aparecerá en la etiqueta etiFecha.

-       Al pulsar Cancelar, la etiqueta etiFecha se borrará.

  1. Nuestro programa necesitará un objeto del tipo DialogoFecha. Este objeto lo declararemos en la zona de variables globales de la ventana principal y lo llamaremos dialogoFecha:




  1. El objeto dialogoFecha pertenece a la clase DialogoFecha. Recuerda que los objetos que declaras de forma global luego debes construirlos en el método constructor. Así pues construiremos el objeto dialogoFecha.

Para construir un objeto que sea un cuadro de diálogo hay que añadir dos parámetros: null, y luego indicar true o false, según quieras que el cuadro de dialogo sea modal o no. En nuestro caso, queremos que el cuadro de diálogo dialogoFecha sea modal, por lo que indicaremos true:




  1. Programa el evento actionPerformed  del botón btnIntroducirFecha. Este botón mostrará al objeto dialogoFecha, donde el usuario introducirá una fecha. Luego, comprobaremos si el usuario pulsó Aceptar o Cancelar. En el caso de que pulsara Aceptar, el programa introducirá en la etiqueta etiFecha la fecha escrita por el usuario. Todo esto se hace preguntando al objeto dialogoFecha a través de los métodos programados. Observa el código:




  1. Ejecuta el programa y observa el funcionamiento del botón btnIntroducirFecha y del cuadro de diálogo dialogoFecha:





EJERCICIO

Añade otra etiqueta a la ventana principal.
Modifica el código del botón btnIntroducirFecha de forma que también aparezca en esta nueva etiqueta la fecha elegida por el usuario en formato largo. Esto debe suceder solo si el usuario Acepta el cuadro de diálogo. En caso de que el usuario Cancele el cuadro de diálogo esta etiqueta se borrará.





CONCLUSIONES:

Es posible crear cuadros de diálogo propios, con las características que más nos interesen.

Estos cuadros de diálogo son clases que derivan de la clase JDialog.

Los cuadros de diálogo se comportan y manejan básicamente igual que las ventanas.

La gran ventaja de crear cuadros de diálogo propios, es que luego se pueden usar en otros proyectos.

1 comentario:

  1. Me gusta este post para entender mejor la parte de Clases y Objetos de la POO.

    ResponderBorrar