En este capítulo, exploraremos cómo trabajar con eventos y escuchadores en Java. Los eventos permiten la interacción entre componentes de una interfaz gráfica de usuario (GUI) y las acciones del usuario. Los escuchadores son objetos que escuchan eventos y responden a ellos. A continuación, profundizaremos en este tema.
6.1. Conceptos Básicos de Eventos y Escuchadores
Los eventos son acciones que ocurren en una interfaz de usuario, como hacer clic en un botón, presionar una tecla o mover el mouse. Para responder a estos eventos, se utilizan escuchadores. Un escuchador es una clase que «escucha» los eventos y responde a ellos con código específico.
Ejemplo 6.1.1: Uso de ActionListener
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class EventosYEscuchadores {
public static void main(String[] args) {
JFrame ventana = new JFrame("Ejemplo de Eventos");
JButton boton = new JButton("Haz clic");
// Agregar un ActionListener al botón
boton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "¡Has hecho clic en el botón!");
}
});
ventana.add(boton);
ventana.setSize(300, 200);
ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ventana.setVisible(true);
}
}
6.2. Tipos de Eventos y Escuchadores
Existen diversos tipos de eventos y escuchadores en Java, incluyendo ActionListener
, MouseListener
, KeyListener
, entre otros. Cada uno se utiliza para manejar un tipo específico de evento.
Ejemplo 6.2.1: Uso de MouseListener
import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class EventosMouse {
public static void main(String[] args) {
JFrame ventana = new JFrame("Eventos de Mouse");
JLabel etiqueta = new JLabel("Haz clic en mí");
etiqueta.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {
JOptionPane.showMessageDialog(null, "Clic en la etiqueta");
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
});
ventana.add(etiqueta);
ventana.setSize(300, 200);
ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ventana.setVisible(true);
}
}
6.3. Ejercicios de Práctica
Ejercicio 6.3.1: Botón Contador
Crea una aplicación GUI con un botón que inicie un contador. Cada vez que se haga clic en el botón, el contador debe aumentar y mostrar su valor en una etiqueta.
Ejercicio 6.3.2: Juego de Adivinanza
Desarrolla un juego simple en el que la aplicación genera un número aleatorio y el usuario debe adivinarlo haciendo clic en un botón. La aplicación debe proporcionar pistas de si el número es mayor o menor.
Resumen del Capítulo
En este capítulo, hemos explorado cómo trabajar con eventos y escuchadores en Java. Los eventos y escuchadores son esenciales para la programación de GUI y permiten la interacción del usuario con la aplicación. Hemos visto ejemplos de cómo utilizar escuchadores para responder a eventos, y hemos proporcionado ejercicios para que los lectores practiquen y profundicen en su comprensión de este tema crucial.
Respuesta ejercicio 6.3.1:
Para resolver el ejercicio de crear una aplicación GUI con un botón que inicie un contador y muestre su valor en una etiqueta cada vez que se hace clic en el botón, sigue estos pasos:
Paso 1: Creación de la Interfaz de Usuario
Primero, crea la interfaz de usuario utilizando la biblioteca Swing de Java. En este ejemplo, se creará una ventana con un botón y una etiqueta.
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ContadorGUI {
public static void main(String[] args) {
// Crear una ventana
JFrame ventana = new JFrame("Contador GUI");
ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Crear un contenedor
Container contenedor = ventana.getContentPane();
// Crear una etiqueta para mostrar el contador
JLabel etiqueta = new JLabel("Contador: 0");
contenedor.add(etiqueta);
// Crear un botón
JButton boton = new JButton("Incrementar");
contenedor.add(boton);
// Inicializar el contador
int contador = 0;
// Agregar un evento al botón para incrementar el contador
boton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
contador++;
etiqueta.setText("Contador: " + contador);
}
});
// Configurar el diseño y tamaño
contenedor.setLayout(new FlowLayout());
ventana.setSize(300, 100);
ventana.setVisible(true);
}
}
Resultado Esperado:
La aplicación mostrará una ventana con una etiqueta «Contador: 0» y un botón «Incrementar». Al hacer clic en el botón, el contador aumentará y su valor se mostrará en la etiqueta.
Paso 2: Ejecución del Programa
Ejecuta el programa para iniciar la aplicación GUI. La ventana aparecerá en la pantalla.
Paso 3: Interacción con la Aplicación
Haz clic en el botón «Incrementar» para ver cómo el contador aumenta y su valor se actualiza en la etiqueta.
Este ejercicio muestra cómo crear una aplicación GUI simple en Java con un botón que incrementa un contador y actualiza una etiqueta para reflejar el valor del contador. Puedes personalizar y ampliar esta interfaz para crear aplicaciones más complejas con interacciones de usuario.
Respuesta ejercicio 6.3.2:
Para resolver el ejercicio de desarrollar un juego simple en el que la aplicación genera un número aleatorio y el usuario debe adivinarlo haciendo clic en un botón, con pistas sobre si el número es mayor o menor, sigue estos pasos:
Paso 1: Creación de la Interfaz de Usuario
Primero, crea la interfaz de usuario utilizando la biblioteca Swing de Java. En este ejemplo, se creará una ventana con un botón, un campo de entrada de texto y una etiqueta para mostrar las pistas.
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
public class JuegoAdivinanza {
public static void main(String[] args) {
// Crear una ventana
JFrame ventana = new JFrame("Juego de Adivinanza");
ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Crear un contenedor
Container contenedor = ventana.getContentPane();
// Generar un número aleatorio
Random random = new Random();
int numeroAdivinar = random.nextInt(100) + 1;
// Crear una etiqueta para mostrar las pistas
JLabel etiqueta = new JLabel("Introduce un número y haz clic en Adivinar");
contenedor.add(etiqueta);
// Crear un campo de entrada de texto
JTextField entrada = new JTextField(10);
contenedor.add(entrada);
// Crear un botón para adivinar
JButton boton = new JButton("Adivinar");
contenedor.add(boton);
// Agregar un evento al botón para manejar las adivinanzas
boton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
int intento = Integer.parseInt(entrada.getText());
if (intento < numeroAdivinar) {
etiqueta.setText("Más alto");
} else if (intento > numeroAdivinar) {
etiqueta.setText("Más bajo");
} else {
etiqueta.setText("¡Adivinaste!");
}
} catch (NumberFormatException ex) {
etiqueta.setText("Ingresa un número válido");
}
}
});
// Configurar el diseño y tamaño
contenedor.setLayout(new FlowLayout());
ventana.setSize(300, 100);
ventana.setVisible(true);
}
}
Resultado Esperado:
La aplicación mostrará una ventana con una etiqueta para proporcionar pistas, un campo de entrada de texto para ingresar adivinanzas y un botón «Adivinar». El usuario puede ingresar números y hacer clic en el botón para recibir pistas sobre si el número a adivinar es mayor o menor. Cuando adivinan el número, se mostrará un mensaje de éxito.
Paso 2: Ejecución del Programa
Ejecuta el programa para iniciar la aplicación GUI. La ventana aparecerá en la pantalla.
Paso 3: Interacción con la Aplicación
Ingresa números en el campo de entrada de texto y haz clic en el botón «Adivinar» para recibir pistas sobre el número a adivinar. Continúa adivinando hasta que encuentres el número correcto.
Este ejercicio muestra cómo crear una aplicación simple de juego de adivinanza en Java utilizando la biblioteca Swing y eventos de botón. Los usuarios pueden adivinar un número aleatorio y recibir pistas sobre si están cerca del número correcto. Puedes personalizar y mejorar este juego para hacerlo más interactivo y desafiante.