Curso de JavaFX
Detectar y procesar el click sobre un botón
En esta lección aprenderás a detectar y gestionar eventos de clic sobre un botón en JavaFX. Veremos cómo asociar una acción a un botón, cómo simplificar el código usando funciones lambda y cómo acceder al elemento que desencadena el evento. ¡Empecemos!
Detectar eventos con setOnAction
El método setOnAction permite asociar un manejador de eventos a un botón. Un manejador de eventos es un bloque de código que se ejecuta cuando ocurre un evento, como hacer clic en el botón.
Button btn = new Button("Púlsame");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("hola");
}
});
root.getChildren().add(btn); ¿Qué está pasando aquí?
- Crear un botón: Se crea un botón con el texto
"Púlsame". - Asociar el evento: Usamos el método
setOnActionpara establecer el manejador. - Definir la acción: La acción definida imprime
"hola"en la consola cada vez que el botón es presionado. - Añadir a la escena: El botón se agrega al contenedor raíz de la interfaz.
Usando lambdas (funciones anónimas):
Java 8 introdujo las expresiones lambda, que permiten escribir el código de forma más concisa. Al usar lambdas, no es necesario declarar explícitamente la clase EventHandler ni el método handle.
btn.setOnAction(event -> System.out.println("hola"));
Ventajas de las lambdas:
- Código más corto y legible.
- Ideal para acciones simples.
Acceder al elemento con el que acabamos de interactuar
En ocasiones, es útil identificar el botón u otro elemento que generó el evento. Esto se logra mediante el método getTarget.
public static void btnPulsado(Event e) {
Button b = (Button) e.getTarget();
...
} ¿Cómo funciona?
- Obtener el origen del evento:
e.getTarget()devuelve el objeto que generó el evento. - Convertir al tipo esperado: En este caso, hacemos un cast a
Buttonpara trabajar con el botón.
Resumen
- Aprendiste a usar
setOnActionpara manejar eventos de clic en un botón. - Simplificaste el código usando expresiones lambda.
- Descubriste cómo identificar el elemento que genera el evento usando
getTarget.
Con estos conocimientos, ya puedes capturar y procesar interacciones del usuario en tu interfaz JavaFX. En la próxima lección, exploraremos cómo trabajar con layouts para estructurar tus aplicaciones. ¡Sigue practicando!