Manejo de eventos en Java

un eventose puede definir como cambiar el estado de un objeto o comportamiento mediante la realización de acciones. Las acciones pueden ser hacer clic en un botón, mover el cursor, presionar una tecla a través del teclado o desplazarse por la página, etc. 

El paquete java.awt.event se puede utilizar para proporcionar varias clases de eventos. 

Clasificación de Eventos

  • Eventos en primer plano
  • Eventos de fondo

Tipos de eventos

1. Eventos de primer plano

Los eventos de primer plano son los eventos que requieren la interacción del usuario para generarse, es decir, los eventos de primer plano se generan debido a la interacción del usuario en los componentes de la interfaz gráfica de usuario ( GUI ). Las interacciones no son más que hacer clic en un botón, desplazar la barra de desplazamiento, momentos del cursor, etc.

2. Eventos de fondo

Los eventos que no requieren la interacción de los usuarios para generarse se conocen como eventos de fondo. Ejemplos de estos eventos son fallas/interrupciones del sistema operativo, finalización de operaciones, etc.

Manejo de eventos

Es un mecanismo para controlar los eventos y decidir qué debe suceder después de que ocurra un evento . Para manejar los eventos, Java sigue el modelo de Delegación de Eventos.

Modelo de evento de delegación

  • Tiene Fuentes y Oyentes.

Modelo de evento de delegación

  • Fuente: los eventos se generan a partir de la fuente. Hay varias fuentes como botones, casillas de verificación, listas, elementos de menú, opciones, barra de desplazamiento, componentes de texto, ventanas, etc., para generar eventos.
  • Oyentes: los oyentes se utilizan para manejar los eventos generados desde la fuente. Cada uno de estos oyentes representa interfaces que son responsables de manejar eventos.

Para realizar el manejo de eventos, necesitamos registrar la fuente con el oyente.

Registro de la fuente con el oyente

Diferentes clases proporcionan diferentes métodos de registro.

Sintaxis:

addTypeListener()

donde Tipo representa el tipo de evento.

Ejemplo 1: Para KeyEvent usamos addKeyListener() para registrarse.

Ejemplo 2: que para ActionEvent usamos addActionListener() para registrarnos.

Clases de eventos en Java

Clase de evento

Interfaz de escucha

Descripción

Evento de acción

ActionListener

Un evento que indica que se produjo una acción definida por un componente, como hacer clic en un botón o seleccionar un elemento de la lista de elementos del menú.

Evento de ajuste

AjusteOyente

El evento de ajuste es emitido por un objeto ajustable como la barra de desplazamiento.

Evento de componente

ComponentListener

Un evento que indica que un componente se movió, cambió el tamaño o cambió su visibilidad.

ContenedorEvento

ContainerListener

Cuando se agrega un componente a un contenedor (o) se elimina de él, un objeto contenedor genera este evento.

Evento de enfoque

FocusListener

Estos son eventos relacionados con el enfoque, que incluyen enfoque, enfoque, enfoque y desenfoque.

ArtículoEvento

ItemListener

Un evento que indica si un elemento fue seleccionado o no.

Evento clave

KeyListener

Un evento que ocurre debido a una secuencia de pulsaciones de teclas en el teclado.

RatónEvento

MouseListener & MouseMotionListener

Los eventos que ocurren debido a la interacción del usuario con el ratón (Dispositivo Señalador).

RatónRuedaEvento

RatónRuedaOyente

Un evento que especifica que la rueda del mouse se giró en un componente. 

Evento de texto

Oyente de texto

Un evento que ocurre cuando cambia el texto de un objeto.

VentanaEvento

WindowListener

Un evento que indica si una ventana ha cambiado de estado o no.

Nota: As Interfaces contiene métodos abstractos que deben ser implementados por la clase registrada para manejar eventos.

Las diferentes interfaces consisten en diferentes métodos que se especifican a continuación.

Interfaz de escucha

Métodos

ActionListener

  • acción realizada()

AjusteOyente

  • ajusteValorCambiado()

ComponentListener

  • componenteRedimensionado()
  • componenteMostrado()
  • componenteMovido()
  • componenteOculto()

ContainerListener

  • componente Agregado()
  • componenteEliminado()

FocusListener

  • foco ganado()
  • foco perdido()

ItemListener

  • elementoEstadoCambiado()

KeyListener

  • tecleado()
  • tecla presionada()
  • clave liberada()

MouseListener

  • mousePressed()
  • mouseClicked()
  • ratónEntrado()
  • mouseExited()
  • mouseReleased()

MouseMotionListener

  • ratónMovido()
  • ratón arrastrado()

RatónRuedaOyente

  • mouseWheelMoved()

Oyente de texto

  • textoCambiado()

WindowListener

  • ventana Activada()
  • ventanaDesactivada()
  • ventana abierta()
  • ventanaCerrada()
  • cierre de ventana()
  • ventana iconificada()
  • ventanaDesiconificada()

Flujo de manejo de eventos

  1. Se requiere la interacción del usuario con un componente para generar un evento.
  2. El objeto de la clase de evento respectiva se crea automáticamente después de la generación del evento y contiene toda la información del origen del evento.
  3. El objeto recién creado se pasa a los métodos del oyente registrado.
  4. El método se ejecuta y devuelve el resultado.

Enfoques de código

Los tres enfoques para realizar el manejo de eventos consisten en colocar el código de manejo de eventos en uno de los lugares especificados a continuación.

  1. dentro de la clase
  2. otra clase
  3. Clase anónima

Nota: use cualquier IDE o instale JDK para ejecutar el código, el compilador en línea puede arrojar errores debido a la falta de disponibilidad de algunos paquetes.

Manejo de eventos dentro de la clase

Java

// Java program to demonstrate the
// event handling within the class
 
import java.awt.*;
import java.awt.event.*;
 
class GFG extends Frame implements ActionListener {
 
    TextField textField;
 
    GFGTop()
    {
        // Component Creation
        textField = new TextField();
 
        // setBounds method is used to provide
        // position and size of the component
        textField.setBounds(60, 50, 180, 25);
        Button button = new Button("click Here");
        button.setBounds(100, 120, 80, 30);
 
        // Registering component with listener
        // this refers to current instance
        button.addActionListener(this);
 
        // add Components
        add(textField);
        add(button);
 
        // set visibility
        setVisible(true);
    }
   
    // implementing method of actionListener
    public void actionPerformed(ActionEvent e)
    {
        // Setting text to field
        textField.setText("GFG!");
    }
   
    public static void main(String[] args)
    {
      new GFGTop();
    }
}

Producción

Después de hacer clic, el valor del campo de texto se establece en GFG.

Explicación

  1. En primer lugar, extienda la clase con el applet e implemente el oyente respectivo.
  2. Cree componentes de campo de texto y botón.
  3. Registrado el componente del botón con el evento respectivo. es decir, ActionEvent por addActionListener().
  4. Al final, implemente el método abstracto.

Manejo de eventos por otra clase

Java

// Java program to demonstrate the
// event handling by the other class
 
import java.awt.*;
import java.awt.event.*;
 
class GFG1 extends Frame {
   
    TextField textField;
   
    GFG2()
    {
        // Component Creation
        textField = new TextField();
       
        // setBounds method is used to provide
        // position and size of component
        textField.setBounds(60, 50, 180, 25);
        Button button = new Button("click Here");
        button.setBounds(100, 120, 80, 30);
       
        Other other = new Other(this);
       
        // Registering component with listener
        // Passing other class as reference
        button.addActionListener(other);
       
        // add Components
        add(textField);
        add(button);
       
        // set visibility
        setVisible(true);
    }
   
    public static void main(String[] args)
    {
      new GFG2();
    }
}

Java

/// import necessary packages
import java.awt.event.*;
 
// implements the listener interface
class Other implements ActionListener {
                          
    GFG2 gfgObj;
   
    Other(GFG1 gfgObj)
    {
      this.gfgObj = gfgObj;
    }
   
    public void actionPerformed(ActionEvent e)
    {
        // setting text from different class
        gfgObj.textField.setText("Using Different Classes");
    }
}

Producción

Manejo de eventos de diferentes clases.

Gestión de eventos por clase anónima

Java

// Java program to demonstrate the
// event handling by the anonymous class
 
import java.awt.*;
import java.awt.event.*;
 
class GFG3 extends Frame {
   
    TextField textField;
   
    GFG3()
    {
        // Component Creation
        textField = new TextField();
       
        // setBounds method is used to provide
        // position and size of component
        textField.setBounds(60, 50, 180, 25);
        Button button = new Button("click Here");
        button.setBounds(100, 120, 80, 30);
       
        // Registering component with listener anonymously
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e)
            {
                // Setting text to field
                textField.setText("Anonymous");
            }
        });
       
        // add Components
        add(textField);
        add(button);
       
        // set visibility
        setVisible(true);
    }
   
    public static void main(String[] args)
    {
        new GFG3();
    }
}

Producción

Manejo anónimo

Publicación traducida automáticamente

Artículo escrito por akhilvasabhaktula03 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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