Cuadros de Diálogo
Un cuadro de
diálogo es un cuadro con opciones que aparece normalmente cuando se activa una
opción del menú principal del programa.
Los cuadros de
diálogo tienen forma de ventana aunque no poseen algunas características de
estas. Por ejemplo, no pueden ser minimizados ni maximizados.
Los cuadros de
diálogo, aparte de las opciones que muestran, suelen contener dos botones
típicos: el botón Aceptar y el botón Cancelar. El primero de ellos da por
válidas las opciones elegidas y cierra el cuadro de diálogo. El segundo
simplemente cierra el cuadro de diálogo sin hacer ninguna modificación.
He aquí algunos
ejemplos de cuadros de diálogo del programa Word:
Para crear
cuadros de diálogo en Java, se usa un tipo de clase llamada JDialog.
Estos objetos pueden ser diseñados como si fueran ventanas, aunque representan
realmente cuadros de diálogo.
Ejercicio:
- Crea
un nuevo proyecto en NetBeans.
- Dentro
de Source Packages crea un Java
Package y llamalo paqueteInicial.
- Dentro
de paqueteInicial crea un JFrame Form y llamalo VentanaInicial.
- Diseña el JFrame
Form (VentanaInicial) de forma que la ventana tenga el siguiente
aspecto:
Los elementos de
la ventana tendrán los siguientes nombres:
-
Cuadro de texto de
unidades: txtUnidades.
-
Cuadro de texto de
precio: txtPrecio.
-
Etiqueta con borde del
total: etiTotal.
-
Botón Calcular:
btnCalcular.
-
Botón Configuración:
btnConfiguracion.
- Se pretende que
cuando se pulse el botón Calcular se calcule el total de la venta (esto se
hará luego) Para hacer el cálculo se tendrán en cuenta el IGV y el Descuento a aplicar. Estos dos valores serán variables
globales, ya que se usarán en distintos lugares del programa.
- Así pues entra
en el código y declara una variable global igv y otra descuento
tal como se indica a continuación (recuerda que las variables globales se
colocan justo después de la línea donde se define la clase principal public
class):
- Cuando el
programa arranque, interesará que el igv
por defecto sea 0, y que el descuento
por defecto sea 0 también, así que en el método constructor, inicializaremos las variables
globales igv y descuento a 0:
- Vamos a
programar el botón btnCalcular.
Entra en su evento actionPerformed y
allí se programará la realización del cálculo de la siguiente forma:
double unidades;
double precio;
double total;
double igvImporte;
double descuentoImporte;
double totalSinIgv;
//Almacenamos los valores de los
cuadros de texto conviertiéndolos
//a tipo double en las variables
respectivas.
unidades = Double.parseDouble(txtUnidades.getText());
precio = Double.parseDouble(txtPrecio.getText());
//Calculamos el total sin igv, el importe del igv y el importe del descuento.
totalSinIgv = unidades * precio;
igvImporte = totalSinIgv * igv / 100;
descuentoImporte = totalSinIgv * descuento / 100;
//Calculamos el importe total.
total = totalSinIgv + igvImporte -
descuentoImporte;
//Mostramos el total en la etiqueta.
etiTotal.setText(total + "");
- Puedes ejecutar el programa y comprobar que el botón Calcular funciona,
aunque el cálculo que realiza lo hace con un igv igual a 0 y un descuento
igual a 0.
- Seguidamente
programaremos el botón Configuración de forma que nos
permita decidir qué igv y qué descuento queremos
aplicar. Este botón mostrará un CUADRO DE DIÁLOGO que permita al usuario
configurar estos datos.
- Para añadir un
cuadro de diálogo al proyecto, se tiene que añadir un objeto del tipo JDialog
sobre el JFrame.
- Los JDialog son
objetos ocultos, es decir, objetos que se colocan en la parte del Inspector llamada Otros
Componentes, al igual que sucede con los menús contextuales o los JFileChooser.
Observa el inspector, allí verás el JDialog que has añadido:
- Cámbiale el
nombre. Lo llamaremos dialogoConfiguracion.
- Los cuadros de
diálogo generalmente traen por defecto el layout BorderLayout. Para
nuestro ejemplo cambiaremos el layout del JDialog por el Diseño Libre:
- Los JDialog
se pueden diseñar independientemente, al igual que los JPanel.
Solo tienes que hacer doble clic sobre el dialogoConfiguracion (en el inspector) y este aparecerá en el centro de la ventana.
- Así pues debes
diseñar el dialogoConfiguracion para que quede de la siguiente forma:
Los elementos del cuadro de diálogo tienen los siguientes nombres:
-
El cuadro de texto del
IGV: txtPorcentajeIgv.
-
El cuadro de texto del
DESCUENTO: txtPorcentajeDescuento.
-
El botón Aceptar:
btnAceptar.
-
El botón Cancelar:
btnCancelar.
Si observas el Inspector debe
tener el siguiente aspecto:
- Se pretende que
cuando se pulse el botón Configuración en la ventana
principal, debe aparecer el cuadro de diálogo dialogoConfiguracion,
que acabas de diseñar:
- Para conseguir
esto, debes programar en el evento actionPerformed del botón btnConfiguracion lo siguiente:
dialogoConfiguracion.setSize(300, 220);
dialogoConfiguracion.setLocation(100,
100);
dialogoConfiguracion.setVisible(true);
- El código
anterior hace lo siguiente:
-
A través del método setSize se asigna un tamaño de 300 x 220
al cuadro de diálogo.
-
A través del método setLocation se determina que el cuadro
de diálogo aparecerá en la posición (100, 100) de la pantalla.
-
A través del método setVisible hacemos que el cuadro de
diálogo se muestre.
- Ejecuta el
programa y observa lo que sucede cuando pulsas el botón Configuración.
Debería aparecer el cuadro de diálogo en la posición establecida y con el
tamaño definido:
- Los botones Aceptar
y Cancelar del cuadro de diálogo aún no hacen nada. Así que
los programaremos. Empezaremos por el más sencillo, el botón Cancelar.
- El botón Cancelar
de un cuadro de diálogo simplemente cierra dicho cuadro de diálogo. Para
ello, debes añadir el siguiente código en el evento actionPerformed del
botón Cancelar del diálogo:
dialogoConfiguracion.dispose();
El método dispose se usa para cerrar un cuadro de diálogo. También se
puede usar para cerrar un JFrame.
- Ejecuta el
programa de nuevo y comprueba el funcionamiento del botón Cancelar
del cuadro de diálogo.
- Ahora programaremos
el botón Aceptar. Cuando el usuario pulse este botón, se actualizará
el valor del igv y del descuento por los que haya introducido. Es decir, se traspasarán los
valores introducidos en los cuadros de texto txtPorcentajeIgv y txtPorcentajeDescuento
a las variables globales igv y descuento.
Una vez que se haya hecho esto, el cuadro de diálogo se debe cerrar.
- Este es el
código que hace lo anterior. Debe programarlo en el evento actionPerformed
del botón Aceptar:
igv =
Double.parseDouble(txtPorcentajeIgv.getText());
descuento =
Double.parseDouble(txtPorcentajeDescuento.getText());
dialogoConfiguracion.dispose();
- Observe el
código. Primero se traspasa los valores de los cuadros de texto a las
variables globales y luego se cierra el cuadro de diálogo.
- Compruebe el
funcionamiento del programa de la siguiente forma:
- Ejecute el
programa.
- Introduzca 5
unidades y 20 de precio.
- Si pulsa
calcular, el total será 100. (No hay ni igv ni descuento
al empezar el programa)
- Ahora pulse el
botón Configuración, e introduzca un igv del 18. El descuento
déjelo a 0. Acepte.
- Ahora vuelva a
calcular. Observe como ahora el total es 118.0, ya que se tiene en cuenta
el igv configurado.
- Pruebe a
configurar un descuento y vuelva a calcular.
- Se pretende
ahora mejorar un poco el cuadro de diálogo, añadiéndole un título.
Seleccione el cuadro de diálogo en el Inspector
y luego busque su propiedad title. En ella escriba “Configuración igv y descuento”.
- Vuelva a
ejecutar el programa. Observe la barra de título del cuadro de diálogo:
- Ahora se
estudiará el concepto de cuadro de diálogo modal y cuadro
de diálogo no modal.
- Un cuadro de diálogo no modal. Es aquel
que permite activar la ventana desde la que apareció. Los cuadros de
diálogo añadidos a un proyecto son por defecto no modales.
- Ejecuta el
programa y prueba a hacer lo siguiente:
- Pulsa el botón
Configurar. Aparecerá el cuadro de diálogo.
- Pulsa sobre la
ventana.
- Observarás que
la ventana se activa, colocándose sobre el cuadro de diálogo.
- Esto es
posible gracias a que el cuadro de diálogo es no modal.
- A veces, puede
ser interesante que se active la ventana pero que el cuadro de diálogo
siga delante de ella. Para conseguir esto, es necesario activar la
propiedad del cuadro de diálogo llamada alwaysOnTop. Activa
esta propiedad:
- Ahora ejecuta
el programa de nuevo y haz que se visualice el cuadro de diálogo de
configuración. Podrás comprobar que se puede activar la ventana e incluso
escribir en sus cuadros de textos, y que el cuadro de diálogo sigue
visible:
- Es muy común,
cuando tenemos un cuadro de diálogo no
modal, usar la propiedad alwaysOnTop, para que siempre
aparezca delante de la ventana.
- Ahora se
estudiará el concepto de cuadro de diálogo modal.
- Un cuadro de diálogo modal es aquel que no permite que se active otra ventana hasta
que este no se haya cerrado.
- Para convertir
nuestro cuadro de diálogo en modal,
será necesario que lo selecciones en el inspector y busques la propiedad modal. Debes activar esta propiedad.
- Ahora ejecuta
el programa y comprueba lo siguiente:
- Haz que se
visualice el cuadro de diálogo de configuración.
- A continuación
intenta activar la ventana haciendo clic sobre ella. Verás que no es
posible activarla. Es más, intenta escribir en sus cuadros de texto. No
será posible hacerlo. (Incluso observarás un parpadeo en el cuadro de
diálogo avisándote de ello). Esto es debido a que ahora nuestro cuadro de
diálogo es modal.
- Solo cuando
pulses Aceptar o Cancelar, o cierres el cuadro de diálogo, podrás seguir
trabajando con tu ventana.
CONCLUSIONES:
Los Cuadros de Diálogo
son ventanas simplificadas que muestran distintas opciones al usuario.
La clase JDialog
es la que permiten la creación y uso de cuadros de diálogo en un proyecto
java.
Para visualizar un
JDialog será necesario llamar a su método setVisible.
También son interesantes los métodos setSize
para asignarles un tamaño y setLocation
para situar el cuadro de diálogo en la pantalla.
Para cerrar un JDialog
será necesario invocar a su método dispose.
Existen dos tipos de
cuadros de diálogo: los modales y no modales.
Los cuadros de diálogo
modales no permiten que se active otra ventana hasta que el cuadro de diálogo se
haya cerrado.
Los cuadros de diálogo
no modales permiten trabajar con otra ventana a pesar de que el propio cuadro
de diálogo no haya sido cerrado.
tiene el codigo en archivo
ResponderBorrar?