EJERCICIO JAVA: TOGGLEBUTTONS

1. Realiza un nuevo proyecto.
2. Crearás una ventana como la que sigue teniendo en cuenta lo siguiente:

a. Se añadirá una etiqueta con el texto “Precio Base”. No hace falta cambiarle su nombre.

b. Se añadirá un cuadro de texto llamado txtPrecioBase.

c. Se creará un botón “Calcular”, llamado btnCalcular.

d. Se creará una etiqueta vacía y con borde llamada etiTotal. Use la propiedad font de esta etiqueta para hacer que el texto tenga un mayor tamaño.


e. Debes añadir también tres botones, con el texto “Instalación”, “Formación” y “Alimentación BD” respectivamente.
Estos botones no son botones normales, son botones del tipo JToggleButton. Usa este tipo de objeto para crearlos.

Estos botones, se diferencian de los botones normales en que se quedan pulsados cuando se hace un clic sobre ellos, y no vuelven a su estado normal hasta que no se vuelve a hacer clic sobre ellos.

Los tres botones se llamarán respectivamente: tbtnInstalacion, tbtnFormacion, tbtnAlimentacionBD.

f. Añade finalmente tres etiquetas conteniendo los números 40, 200, 200. La primera se llamará etiPrecioInstalacion, la segunda etiPrecioFormacion y la tercera etiPrecioAlimentacionBD.

3.Prueba el programa y comprueba el funcionamiento de los botones JToggleButton:

Observa como al pulsar los JToggledButton estos se quedan pulsados.
Si se vuelven a activar se “despulsan”.

4. Se pretende que el programa funcione de la siguiente forma:

a. El usuario introducirá un precio base para el servicio que se vende.
b. A continuación, si el cliente quiere la instalación, activará el botón Instalación.
c. Si el cliente quiere la formación, activará el botón Formación.
d. Si el cliente quiere la Alimentación de Base de Datos, activará el botón Alimentación BD.
e. Ten en cuenta que el cliente puede querer una o varias de las opciones indicadas.
f. Finalmente se pulsará el botón calcular y se calculará el precio total. Este precio se calcula de la siguiente forma:

Precio Total = Precio Base + Precio Extras.

El precio de los Extras dependerá de las opciones elegidas por el usuario. Por ejemplo, si el usuario quiere Instalación y Formación, los extras costarán 240 euros.


5. Así pues, se programará el actionPerformed del botón Calcular de la siguiente forma:

double precio_base;
double precio_instal; //precio instalación
double precio_for; //precio formacion
double precio_ali; //precio alimentacion
        
//Recojo datos desde la ventana:
       
precio_base = Double.parseDouble(txtPrecioBase.getText());
precio_instal = Double.parseDouble(etiPrecioInstalacion.getText());
precio_for = Double.parseDouble(etiPrecioFormacion.getText());
precio_ali = Double.parseDouble(etiPrecioAlimentacionBD.getText());
       
//Ahora que tengo los datos, puedo hacer cálculos.
       
//Al precio base se le van añadiendo precio de extras
//según estén o no activados los JToggleButtons
       
double precio_total;
       
precio_total = precio_base;
       
if (tbtnInstalacion.isSelected()) { //Si se seleccionó instalación
   precio_total = precio_total+precio_instal;
}
       
if (tbtnFormacion.isSelected()) { //Si se seleccionó formación
   precio_total = precio_total+precio_for;           
}
       
if (tbtnAlimentacionBD.isSelected()) { //Si se seleccionó Alimentación BD
   precio_total = precio_total+precio_ali;
}
       
               
//Finalmente pongo el resultado en la etiqueta

etiTotal.setText(precio_total+" €");

6. Veamos una explicación del código:

a. Primero se crean variables doubles (ya que se admitirán decimales) para poder hacer los cálculos.

b. Se extraerán los datos de la ventana y se almacenarán en dichas variables. Para ello, hay que convertir desde cadena a double:

precio_base = Double.parseDouble(txtPrecioBase.getText());
precio_instal = Double.parseDouble(etiPrecioInstalacion.getText());
precio_for = Double.parseDouble(etiPrecioFormacion.getText());

precio_ali = Double.parseDouble(etiPrecioAlimentacionBD.getText());

c. Una vez obtenidos los datos en forma numérica, ya se pueden hacer cálculos con ellos. El programa declara una nueva variable precio_total donde se introducirá el resultado. En primer lugar se introduce en esta variable el precio base.

double precio_total;
       

precio_total = precio_base;

d. A continuación se le suma al precio_total los precios de los extras si el botón correspondiente está seleccionado. Esto se hace a través de if. Por ejemplo, para sumar el extra por instalación:

if (tbtnInstalacion.isSelected()) { //Si se seleccionó instalación
   precio_total = precio_total+precio_instal;

}

Esto significa: “Si el botón instalación está seleccionado, añade al precio total el precio por instalación”

Observa el uso del método isSelected para saber si el botón tbtnInstalacion ha sido seleccionado.

e. Finalmente el resultado se muestra en la etiqueta de total.

7. Comprueba el funcionamiento del programa…

Introduce una cantidad (usa el punto para los decimales)
Selecciona los extras que desees.
Pulsa Calcular y obtendrás el resultado

8. Supongamos que normalmente (en el 90 por ciento de los casos) la instalación es solicitada por el usuario. Podría ser interesante que el botón Instalación ya saliera activado al ejecutarse el programa. Para ello, añade en el Constructor la siguiente línea.

tbtnInstalacion.setSelected(true);

Esta línea usa el método setSelected para activar al botón tbtnInstalación.

Comprueba esto ejecutando el programa.

CONCLUSIÓN

Los JToggleButton son botones que pueden quedarse pulsados.

A través del método isSelected podemos saber si un JToggleButton está seleccionado.

También puedes usar el método setSelected para seleccionar o no un botón de este tipo.

Realmente, estos botones no suelen ser muy usados, ya que pueden ser sustituidos por Cuadros de Verificación (JCheckBox) que son más conocidos.

Puedes descargar por dropbox Aquí