Continuamos con el curso de Java de RedesZone.net. En la entrega anterior hablamos sobre los manejadores ItemEvent y explicamos con qué elementos puede ser utilizado, en este caso, los checkBox. Además os planteamos un ejercicio del cual, daremos solución a continuación.
En este volumen, además de daros la solución del ejercicio anterior y comentarla, hablaremos de otro tipo de manejador de eventos, los ChangeEvent. Hablaremos de como puede ser utilizado y os propondremos otro ejercicio para que podáis practicar. Son ejercicios que tienen la misma base y que solo debéis cambiar los manejadores y los componentes que se utilizan por lo que no os llevara mucho trabajo.
Vamos con la solución del ejercicio planteado.
Para los que no se recuerden del ejercicio, consistía en sustituir los botones por dos checkbox, uno para el cuadrado y otro para el círculo, y que inicialmente estuviesen deseleccionados. Si seleccionamos cada uno deberá aparecer la figura correspondiente, y si ambos están seleccionados deberán aparecer ambos.
Vamos con la primera clase, la clase Aplicación:
La distribución de componentes no la hemos modificado, lo que cambia son la declaración de los manejadores de los checkBox, y las clases manejadoras. En el caso de las clases manejadoras, la lógica es clara, si está seleccionado se llama a un método de la clase PanelDibujos y después al repaint(). Para ambos manejadores es la misma por lo que solo hay que cambiar los métodos que son llamados ya que uno es para el cuadrado y otro para el círculo.
En la comparación es necesario hacer un cast ya que getSource() nos devuelve un Object y el método isSelected() necesita un checkBox, por lo que esa es la explicación de tener que hacer un cast .
Vamos con la clase PanelDibujos:
En esta clase hemos añadido dos variables enteras, cuadrado y círculo, con las que controlaremos si hay que dibujarlas o no. En el caso que el checkBox esté seleccionado su valor será 1 y por el contrario será 0. Esto lo haremos con los métodos seleccionaCuadrado() y deseleccionaCuadrado(). Lo mismo sería para el círculo. La programación del método paintComponent() sería el mismo que en el anterior ejercicio pero con ligeras modificaciones.
Hoy en el curso de Java, vamos a hablar del manejador ChangeEvent.
Se manejan utilizando una clase que implemente la interfaz:
[java]public interface ChangeListener extends EventListener {
public void stateChanged(ChangeEvent e);
}[/java]
La asociación de la clase manejadora con el componente se realiza mediante el método:
void addChangeListener(ChangeListener l)
Como ejercicio para la próxima semana, crearemos una barra con tres posiciones,0, 1 y 2. En cero no habrá ninguna figura y será la posición inicial, en el 1 se pintará el cuadrado y en el 2 se pintará sólo el cuadrado.
Para la próxima entrega además de dar la solución a este ejercicio, también explicaremos los manejadores de eventos relacionados con las listas, los ListSelectionEvent.