Cuando trabajamos con pantallas, debemos estar preparados para recibir eventos. En Swing, un evento es una acción realizada por un usuario; por ejemplo la pulsación de un botón, o la pulsación de una tecla en el teclado.
Reconoceremos como origen del evento el objeto que lo ha generado. Por ejemplo, cuando se presiona un JButton, el evento “click” se crea en el JButton, por lo cual ese será el origen
Para poder recibir los eventos, debemos implementar la interface ActionListener, que solo tiene el método actionPerformed. Las clases que implementan esta interface, pueden ser registradas para recibir eventos.
En cada componente del que deseemos recibir eventos, deberemos registrar la clase que los procesará, o utilizar expresiones lambda para establecer acciones.
Por ejemplo, si queremos que cuando se pulse un botón, se cierre el programa, podríamos hacer:
Para lograrlo, lo que hemos hecho, ha sido añadir una línea registrando un “listener” que en este caso solo era una expresión lambda.
Si quisiéramos realizar alguna acción, también lo podríamos hacer con clases anónimas; algo como
Aunque no es aconsejable trabajar de esta forma (clases anónimas), en este ejemplo, se crea la clase y se implementa el método actionPerformed en donde indicamos lo que queremos hacer.
Por último, comentar que en cada evento, se recibe un objeto ActionEvent con toda la información acerva del evento producido y su origen, que lo podemos utilizar como en este ejemplo
Gestión de eventos de ratón en swing
Igual que el teclado genera eventos cuando se pulsan teclas, el ratón, también genera eventos que pueden ser recibidos implementando la interface MouseListener.
Los eventos que se pueden capturar son:
mouseClicked(MouseEvent e); | Al pulsar y soltar el botón |
mousePressed(MouseEvent e); | Al pulsar el botón |
mouseReleased(MouseEvent e); | Al soltar el botón |
mouseEntered(MouseEvent e); | Al entrar el puntero de ratón en el área del objeto indicado |
mouseExited(MouseEvent e); | Al salir el puntero de ratón en el área del objeto indicado |
>
A continuación, hemos modificado la clase con la que trabajábamos antes, para incluir los eventos de ratón