Usar KeyEvent en JavaFX

MD Aminul Islam 15 febrero 2024
Usar KeyEvent en JavaFX

KeyEvent se utiliza para detectar la pulsación de una tecla y ejecutar un bloque de código específico cuando se pulsa la tecla.

Este artículo mostrará cómo crear un evento clave y ejecutar un código simple cuando un usuario presiona una tecla. También veremos un ejemplo sencillo para que sea más fácil de entender.

Usar KeyEvent en JavaFX

El formato general para crear eventos clave se muestra a continuación.

scene.setOnKeyPressed(
    (KeyEvent event)
        -> {
            // Create a key event that execute when any key pressed from your keyboard
            //  Add the actions that we are going to take when a key pressed.
        });

Veremos un ejemplo que detectará la pulsación de tecla del usuario y mostrará un mensaje de que se ha pulsado una tecla.

El código fuente de nuestro ejemplo será el siguiente, y describiremos cada línea proporcionando los comandos necesarios. Echemos un vistazo.

import javafx.application.Application; // Package to create application
import javafx.scene.Scene; // Package to create a scene
import javafx.scene.control.Label; // Package to create a label
import javafx.scene.input.KeyEvent; // Package to create a key event
import javafx.scene.layout.HBox; // Package for the Hbox
import javafx.stage.Stage; // Package to create a stage

public class FxKeyListen extends Application {
  Label lbl; // Declares a label
  HBox _hbox; // Declares a HBox.

  public void start(Stage SimpleStage) throws Exception {
    SimpleStage.setTitle(
        "Detect key event"); // Set the application title which is "Detect key event"
    lbl =
        new Label("No key is pressed !!!"); // Create a label with default text "No key pressed !!!"
    _hbox = new HBox(lbl); // Create a HBox  with a label
    Scene scene = new Scene(_hbox, 400, 400); // Create a scene with HBox and necessary dimentions.

    scene.setOnKeyPressed(
        (KeyEvent event)
            -> { // Create a key event that execute when any key pressed from your keyboard
          lbl.setText("Key press detected !!!"); // The actions that we are going to take when a key
                                                 // pressed. In our case we are changing the label
                                                 // text to "Key press detected !!!"
        });
    SimpleStage.setScene(scene); // Set the scene
    SimpleStage.show(); // Visualize the scent
  }

  public static void main(String[] args) {
    Application.launch(args); // Run our application
  }
}

Ya comandamos el propósito de cada línea. Ahora vamos a explicar cómo funciona el código.

Creamos una etiqueta en nuestro código con el texto predeterminado de Ninguna tecla presionada !!! por la línea lbl = new Label ("Ninguna tecla presionada !!!");. Esta etiqueta tiene como objetivo mostrar al usuario que no se presiona ninguna tecla.

Luego creamos un evento de pulsación de tecla simple como una acción que se ejecutará cuando el usuario presione una tecla de su teclado; cambiamos el texto por defecto de la etiqueta y lo ponemos a Tecla pulsada detectada!!!. Entonces, para este propósito, el código agrega como acción es como lbl.setText("¡¡Pulsación de tecla detectada!!!");.

Ahora, cuando ejecute el código después de una compilación exitosa, se abrirá una ventana con el título “Detectar evento clave”, y después de presionar una tecla de su teclado, verá un resultado como el que se muestra a continuación.

Producción:

salida del oyente de teclas javafx

Recuerde, si su IDE no admite la inclusión automática de bibliotecas. Luego, es posible que deba incluir los archivos de biblioteca necesarios manualmente antes de compilar.

MD Aminul Islam avatar MD Aminul Islam avatar

Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.

LinkedIn

Artículo relacionado - Java JavaFX