JTagua

Inicio » Swing » Objetos » JCheckBox » Swing 13: JCheckBox

Swing 13: JCheckBox

Licencia

Creative Commons License

Visitas:

  • 813.327 hits

Vamos a tratar ahora el componente JCheckBox.

Este componente (casilla de activación en la paleta Swing) se utiliza frecuentemente como botón de estado. Proporciona información del tipo o No (true o false),  el argumento es de tipo booleano: verdadero (true) si la caja está seleccionada y falso (false) en otro caso.

EJERCICIO1:

Vamos a realizar un sencillo y simpático ejercicio. Se trata de una imagen del rostro de un muñeco que puede presentar ninguna, todas, una, dos, tres o cuatro características que son: Barbilla, Gafas, Pelo y Dientes. Es decir:

Obviamente, la presentación de uno u otro atributo o elemento dependerá de que esté activa o no cualquiera de las 4 cajas de verificación que incluirá el problema.

Para resolver este problema necesitamos 12 imágenes, estas imágenes pueden encontrarse aquí.(Geek images). La nomenclatura de estas imágenes es bastante significativa, pues todas ellas tienen una misma raíz, es decir, geek-, a la que le sigue cuatro caracteres principales que se obtienen a partir del guión (-), el carácter “c”, el carácter “g”, el carácter “h” y el carácter “t” (iniciales de chin o Barbilla, glasses o Gafas, hair o Pelo y finalmente teeth o Dientes). El carácter guión, cualquiera que sea la posición que ocupe, indica ausencia de una de las características. Por ejemplo, si los cuatro caracteres principales fueran guiones, quiere decir que el muñeco de la imagen carece de c, de g, de h, de t o lo que es lo mismo, no tiene ni barbilla, ni gafas, ni pelo, ni dientes.

Y así por ejemplo, la imagen que sí tiene Pelo (h) y sí tiene Dientes (t) tendrá unos cuatro caracteres principales (caracteres finales del nombre de la imagen) en la forma

“- -ht”. Los dos primeros atributos no aparecen en la imagen del muñeco, es decir, ni Barbilla (c) ni Gafas (g).

O La imagen que sí tiene Barbilla (c) y sí tiene Pelo (h), tendrá unos cuatro caracteres principales (caracteres finales del nombre de la imagen) en la forma “c-h-“. Obviamente en este caso, el muñeco de la imagen no tiene ni Gafas (g) ni Dientes (t).

Y así por extensión el resto de las combinaciones de 0, 1, 2, 3, 4 atributos. Es importante recordar que siempre se respeta el orden cght

El problema consistirá en :

1.- Iniciar una sesión del IDE de NetBeans y crear un proyecto nuevo llamado por ejemplo, “checkbox0”, haciendo “Proyecto nuevo”, “Java”, “Java Aplicacion”.

2.- Añadir un JFrame al que llamaremos, por ejemplo, “cuadro”.

3.- Crear el JFrame y visualizarlo en el método main de la clase Main.

cuadro ventana = new cuadro();
ventana.setVisible(true);

4.-Colocar sobre el JFrame un JPanel y sobre él cuatro casillas de verificación (ninguna de ellas marcadas inicialmente) que llamaremos cvchin, cvglasses, cvhair y cvteeth

5.-Cambiaremos los textos a Barbilla, Gafas, Pelo y Dientes.

6.- Crear una carpeta que cuelgue de la carpeta “checkbox0” con el nombre “imagenes”. Copiaremos a dicha carpeta las 16 imagenes antes mencuionadas.

7.- Importar la definición de la clase ImageIcon para manejar los iconos/imágenes desde la carpeta , y que colocaremos justo debajo de la instrucción que define el paquete “package checkbox0;” en la clase “cuadro”.

import javax.swing.ImageIcon;

8.- Asignar al panel una etiqueta que contendrá inicialmente la imagen geek_ _ _ _.gif y a la que llamaremos “lmuñeco”. De esta manera, cuando se presente el JFrame como no existe ninguna casilla de verificación marcada aparecerá nuestro divertido muñeco sin ningún atributo.

9.- Definiremos cuatro cadenas c, g, h y t al principio de la clase “cuadro” con los valores iniciales igualados a guión “-“.

String c = “-“;
String g = “-“;
String h = “-“;
String t = “-“;

Estas variables cambiarán a c, g, h y t cada vez que el estado de cualquiera de las cajas de verificación sea “seleccionada/marcada”.

¿Cómo sabemos que las casillas de verificación están seleccionadas?.

10.- Abrir el evento actionPerformed de todas y cada una de las casillas y añadiremos el siguiente código, que para el objeto cvchin, será

if ( cvchin.isSelected()){ c = “c”;}
else  {c = “-“;}
repintar();

Es necesario repetir esta tarea con cada una de las casillas de verificación, sustituyendo en el código anterior el nombre de la casilla por la correspondiente, es decir, cvglasses, cvhair y cvteeth. También habría que sustituir en el código anterior CADA UNA DE LAS “c” por “g”, o “h” o “t” respectivamente…

Es fácil interpretar que este código sencillamente (después de que cuando el usuario hace clik en una casilla de verificación)  se pregunta por el estado de la casilla, y si está seleccionada entonces la variable c, g, h, t (segun casilla) se coloca en c, g, h, t respectivamente, por el contrario en caso de no estar seleccionada coloca la variable en cuestion a guión “-“.

Una vez que el usuario ha pulsado click necesitamos repintar la casilla de verificación para actualizar la imagen y esto es común a todos los cuatro eventos, por esta razón abrimos un nuevo método denominado “repintar”.

11.- Creamos el método repintar dentro de la clase con el siguiente código,

private void repintar() {
String nombre =”/checkbox0/imagenes/geek-” + c+ g+ h+ t + “.gif”;
ImageIcon muñeco = new javax.swing.ImageIcon(getClass().getResource(nombre));
lmuñeco.setIcon(muñeco);
lmuñeco.repaint();
}

Definimos la variable de cadena “nombre” como una cadena construida, en parte, por las variables c, g, h, t para así reflejar los atributos disponibles y poder localizarla.

Por otro lado, cargamos la imagen y la fijamos a la etiqueta lmuñeco.

Aquí vemos una de las 16 posibles situaciones,

Existen otras soluciones al problema, pero creo que esta es la mas sencilla …


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: