Contents

Eventos y componente JButton

El modelo de eventos de Java

En Java, cada evento está representado por un objeto que es una subclase de la clase EventObject en el paquete java.util. Cada subclase de EventObject representa un tipo de evento particular. Por ejemplo:
  • MouseEvent, para representar acciones del ratón: mover, arrastrar, hacer clic en un botón del ratón, etc.
  • KeyEvent, para representar acciones del teclado, esto es, pulsar teclas.
  • ActionEvent, para representar un acción del usuario en la interfaz, por ejemplo, pulsar un botón en la pantalla.
No obstante, en el modelo de eventos de Java, los EventObject no realizan acciones por si mismos, sino que esos eventos son enviados a otro objeto encargado de responder a un tipo de evento en particular. Estos objetos son los que conocemos como listeners o "escuchadores", y existen diferentes listeners que "escuchan" a los diferentes eventos, tales como los mouse listeners, key listeners o action listeners. Los listener no se implementan como clases en java, sino como interfaces. Un interface sería entonces una colección de métodos que definen un comportamiento en particular. De este modo, cualquier clase que suministre información para dichos métodos puede declarar que implementa a dicho interface. La gran ventaja de implementar interfaces frente a heredar de otras clases es que una misma clase puede implementar varios interfaces simultáneamente pero solo puede heredar de una. Los listeners que usaremos estarán en el paquete java.awt.event (que debemos importar antes de implementarlos) y nos podemos encontrar los siguientes: Nombre: ActionListener Descripción: Se produce al hacer click en un componente, también si se pulsa Enter teniendo el foco en el componente. Método:
public void actionPerformed(ActionEvent e)
Eventos:
  • JButton: click o pulsar Enter con el foco activado en él.
  • JList: doble click en un elemento de la lista.
  • JMenuItem: selecciona una opción del menú.
  • JTextField: al pulsar Enter con el foco activado.
Nombre: KeyListener Descripción: Se produce al pulsar una tecla. según el método cambiara la forma de pulsar la tecla. Métodos:
public void keyTyped(KeyEvent e) public void keyPressed(KeyEvent e) public void keyReleased(KeyEvent e)
Eventos: Cuando pulsamos una tecla, según el listener:
  • keyTyped: al pulsar y soltar la tecla.
  • keyPressed : al pulsar la tecla.
  • keyReleased : al soltar la tecla.
Nombre: FocusListener Descripción: Se produce cuando un componente gana o pierde el foco, es decir, que esta seleccionado. Métodos: Recibir o perder el foco. Nombre: MouseListener Descripción: Se produce cuando realizamos una acción con el ratón. Métodos:
public void mouseClicked(MouseEvent e) public void mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e) public void mousePressed(MouseEvent e) public void mouseReleased(MouseEvent e)
Eventos: Según el listener:
  • mouseClicked: pinchar y soltar.
  • mouseEntered: entrar en un componente con el puntero.
  • mouseExited: salir de un componente con el puntero
  • mousePressed: presionar el botón.
  • mouseReleased: soltar el botón.
Nombre: MouseMotionListener Descripción: Se produce con el movimiento del mouse. Métodos:
public void mouseDragged(MouseEvent e) public void mouseMoved(MouseEvent e)
Eventos: Según el listener:
  • mouseDragged: click y arrastrar un componente.
  • mouseMoved: al mover el puntero sobre un elemento.
De esta forma, los listener se pueden invocar de esta manera:

Ver ejemplo de código

o de esta otra:

Ver ejemplo de código

JButton

El control JButton tiene como objetivo que el usuario pueda interactuar con él. La mecánica para atrapar el clic del objeto de la clase JButton se hace mediante la implementación de un ActionListener como acabamos de ver, más la declaración del método asociado a ese evento, en este caso actionPerformed. Ejemplo 1: Confeccionar una ventana que muestre un botón. Cuando se presione finalizar la ejecución del programa Java.

Ver ejemplo de código

Ejemplo 2: Confeccionar una ventana que contenga tres objetos de la clase JButton con las etiquetas "1", "2" y "3". Al presionarse cambiar el título del JFrame indicando qué botón se presionó.

Ver ejemplo de código

Ejemplo 3: Confeccionar una ventana que contenga tres objetos de la clase JButton con las etiquetas "Pulsa o teclea 1", "Pulsa o teclea 2" y "Pulsa o teclea 3" y un display de tipo JLabel. Al presionarse cualquiera de los botones o pulsar en el teclado 1, 2 o 3 debe cambiar el texto del JLabel con los números correspondientes. Además, al pasar por encima de cada botón debe cambiar el color de fondo del mismo. Por último, un cuarto botón con el texto "limpiar display" (o pulsar la letra "c") debe vaciar el texto del JLabel display.

Ver ejemplo de código

Fuentes: Eric S. Roberts. The Art & Science of Java Fernando Ureña Gómez. discoduroderoer.es Diego Moisset. tutorialesprogramacionya.com