Eventos y Listeners en Java

Hola a todos, hoy os explicare como usar los eventos y Listeners en Java, esto es muy importante en las aplicaciones gráficas.

Los eventos son las acciones que puede realizar el usuario, al realizar un evento se produce una serie de acciones. Por ejemplo, si el usuario pulsa un botón llamado «Salir» cerrara la aplicación. Otro ejemplo muy usado es para validar texto que introduzcamos en un campo de texto.

Los Listeners (oyentes o escuchadores en español) se encargan de controlar los eventos, esperan a que el evento se produzca y realiza una serie de acciones. Según el evento, necesitaremos un Listener que lo controle.

Cada Listener tiene una serie de métodos que debemos implementar obligatoriamente, aunque solo queramos usar uno solo de ellos.

Los Listeners que usaremos estarán en el paquete java.awt.event.

Vamos a ver los distintos Listeners que existen, la definición de sus métodos y los eventos que controlan:

Nombre ListenerDescripciónMétodosEventos
ActionListenerSe produce al hacer click en un componente, también si se pulsa Enter teniendo el foco en el componente.

public void actionPerformed(ActionEvent e)


  • 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.
KeyListenerSe produce al pulsar una tecla. según el método cambiara la forma de pulsar la tecla.

public void keyTyped(KeyEvent e)

public void keyPressed(KeyEvent e)

public void keyReleased(KeyEvent e)

Cuando pulsamos una tecla, segun el Listener:

  • keyTyped:al pulsar y soltar la tecla.

  • keyPressed: al pulsar la tecla.

  • keyReleased: al soltar la tecla.

FocusListenerSe produce cuando un componente gana o pierde el foco, es decir, que esta seleccionado.

public void focusGained(FocusEvent e)

public void focusLost(FocusEvent e)

Recibir o perder el foco.
MouseListenerSe produce cuando realizamos una acción con el ratón.

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)

Según el Listener:

  • mouseCliked: 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.

MouseMotionListenerSe produce con el movimiento del mouse.

public void mouseDragged(MouseEvent e)

public void mouseMoved(MouseEvent e)

Según el Listener:

  • mouseDragged: click y arrastrar un componente.

  • mouseMoved: al mover el puntero sobre un elemento

Estos son los más comunes, otros eventos los veremos con más profundidad en posteriores posts

Para añadir un evento, seguiremos la siguiente sintaxis:

Otra forma es:

Por ejemplo:

De la segunda manera seria así:

Es posible que algún que otro componente nos convenga que sea un atributo.

Os dejo un ejemplo completo con distintos tipos de eventos:

Con netBeans, simplemente hacemos click derecho en un elemento (en la parte de diseño) y elegimos en el menú Eventos, el evento queremos programar y nos aparecera por separado en el código.
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

7 comentarios

  1. José Guerrero

    Saludos… Gracias por compartir la publicación,…..
    te escribo por una consulta… tengo un jinternal frame facturar que llama un jframe llamado pagar. Al hacer clic en este ultimo formulario en un boton finalizar, necesito retornar al de facturar y limpiar todo para que puedan hacer otra factura nueva.
    Mi pregunta es la siguiente, debería usar un listener para poder activar y limpiar el formulario de facturar, y si es así, en donde podría llamar ese evento.. Este tema de los listener no he logrado comprender mucho como se usa y si necesito usarlo quisiera algo de orientación..

    Si te es posible responder, agradeceré mucho.
    Saludos.

  2. alejandro reyes

    pero si tengo que usar un addTableModel del abstarttablemodel como le hago
    ????

  3. abdiel_49

    muy bueno pero tengo una duda necesito hacer q tras pulsar un boton se «muestre un panel o ventana pero antes necesito verificar una contrasenia en una ventana auxiliar y si es correcta pues activar una variable» una vez eso recien lanzo la ventana y cierro la ventana auxiliar de lo contrario no,
    lo que verifico es si se marco o no en la ventana auxiliar, sucede q puede pasar mucho para que llene la ventana auxiliar para que se marque el «JcheckBox» y pues la accion del boton que acciona esto supongo que sigue activo para ver si lanza o no la otra ventana, espero se entienda :v

  4. miltongamaliel

    Excelente post, dos semanas he buscado información para tener un panorama claro sobre los Eventos en Java. Gracias por la colaboración.

  5. dorys

    Hola esta muy buena la información, gracias.

    Y como le puedo hacer si quiero que al ingresar mediante un lector de código de barras el código de la tarjeta de una persona, el programa me busque automáticamente los datos relacionados a ese valor ingresado. lo que pasa es que yo lo tengo pero use un botón y de esta manera es muy lento el registro, les agradecería muchísimo si me pueden ayudar por favor.

    Es para un proyecto de mi escuela.

  6. Sleon

    orientado a objetos como seria?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


Warning: Trying to access array offset on value of type null in /home2/discodur/public_html/discoduroderoer/wp-content/themes/disto/single.php on line 539