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
- Crea un proyecto llamado Diálogo
Propio Fecha, que tenga un paquete principal llamado paquetePrincipal
y un JFrame llamado VentanaPrincipal:
- 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.
- 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.
- 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.
- Luego de pulsar el botón Finalizar
observarás que se ha creado una nueva Clase dentro del proyecto llamada DialogoFecha.
- 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:
- Además, tenemos la ventaja de poder
usar la ventana de diseño para crear nuestro cuadro de diálogo DialogoFecha:
- 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í:
- 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
- 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.
- 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.
- Bien, empecemos. Programar las
propiedades es algo sencillo, ya que son simplemente variables globales de
la clase DialogoFecha:
- 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.
- 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:
- 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.
- 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.
- 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.
- Acude a la ventana principal, haciendo
doble clic sobre ella en la ventana de proyectos:
- Diseña esta ventana para que tenga la
siguiente forma:
El botón
se llamará btnIntroducirFecha y
la etiqueta con borde se llamará etiFecha.
- 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á.
- 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:
- 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:
- 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:
- 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á.
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.
Me gusta este post para entender mejor la parte de Clases y Objetos de la POO.
ResponderBorrar