Como todos los lunes, os traemos una nueva entrega del curso de Java de RedesZone.net. Nos encontramos ya por la décimo cuarta entrega de la temática referida a GUI´s, por lo que si os habéis perdido algún capítulo, tenéis el índice disponible para que podáis consultarlo.
En la entrega de este lunes, daremos solución al ejercicio propuesto de ChangeEvent y veremos una nueva clase manejadora de eventos, ListSelectionEvent.
Como siempre os animamos a si tenéis alguna duda no dudéis en comentarla, os la resolveremos lo más pronto posible. Vamos con la solución del ejercicio de la entrega anterior.
El ejercicio consistía en implementar un panel de dibujos con una barra deslizante en la cual se pudiese elegir entre no pintar nada, pintar un círculo o un cuadrado. Esta sería la apariencia de la interfaz:
Como véis tenemos la barra y una caja de texto asociada a ella, por lo que cada vez que modifiquemos la barra el valor numérico de la caja de texto se irá actualizando. De 0 a 24, el panel de dibujos permanacerá vacío, de 25 a 49, permanecerá pintado un cuadrado, y en el valor 50 se pintará un circulo y desparecerá el cuadrado. La barra por lo tanto tiene un intervalo de valores de 0 a 50, ambos inclusives.
Vamos con la clase de la aplicación:
No tiene mucha complejidad, lo único complicado puede ser la clase manejadora y las condiciones que comprueban que el valor se encuentre en un intervalo o en otro. Utilizamos una función perteneciente a la clase PanelDibujos, para indicar que función debe hacer el repaint(). Con el valor 0 no se pinta nada, con uno se pinta el cuadrado y con 2 se pinta el círculo.
Vamos con la clase PanelDibujos
En esta clase no hay muchos cambios, una variable global que se encarga de determinar la función de pintado y que la modificamos en la clase de la aplicación por medio de la llamada a una función a la cual se la pasa un entero. En el método paintComponent()mantenemos tres condiciones dependiendo de que opción es la que se deba hacer.
Una vez hemos dado la solución al ejercicio propuesto vamos con la explicación del temario de hoy, ListSelectionEvent.
Se manejan utilizando una clase que implemente la interfaz:
[java]public interface ListSelectionListener extends EventListener {
public void valueChanged(ListSelectionEvent evt);
}[/java]
La asociación de la clase manejadora con el componente se realiza mediante el método:
void addListSelectionListener(ListSelectionListener listener)
Como suponéis, ahora llega el momento de que os propongamos un ejercicio. Manteniendo la base de los anteriores, es decir, el panel de dibujos, hacer que por medio de una lista se dibujen distintos elementos en dicho panel (cuadrado, círculo, rectángulo ovalado,…), por lo que al realizar una pulsación sobre este elemento en la lista se borre el elemento anterior, si es que había alguno y aparezca dibujado el nuevo.
Para el siguiente volumen os citamos para comprobar la solución de este ejercicio y además ya hemos acabado con las clases manejadoras por lo que vamos a empezar una nueva materia, los diálogos y las ventanas.