¿Cómo crear y personalizar un javafx.scene.control.Label en JavaFX?

| Última modificación: 14 de enero de 2025 | Tiempo de Lectura: 4 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Si te pasó como a mí, que me asusté cuanto tuve que mostrar información estática, como títulos o descripciones en mis diseños de interfaces gráficas, entonces sabes lo que es desesperarse y sentirse estancando en JavaFX. Yo pude salir de esa encrucijada aprendiendo a usar javafx.scene.control.Label, un componente muy bueno para cualquier aplicación que se vaya a usar para comunicar mensajes visuales a los usuarios. Te explico cómo crear, personalizar y aprovechar al máximo los Label para enriquecer tus interfaces gráficas.

javafx.scene.control.Label qué es

¿Qué es javafx.scene.control.Label?

Javafx.scene.control.Label es la representación de una etiqueta en JavaFX con la que puedes mostrar texto de forma estática en tu interfaz de usuario. Este texto puede ser un título, una descripción, una instrucción, etc. Lo que sucede es que no es interactivo, es decir, el usuario no puede hacer clic en él para realizar una acción.

Características:

  • Texto: Puedes establecer el texto que quieres que se muestre en la etiqueta.
  • Fuente: Puedes personalizar la fuente del texto (tipo, tamaño, estilo).
  • Color: Puedes cambiar el color del texto.
  • Alineación: Puedes controlar la alineación del texto dentro de la etiqueta (izquierda, derecha, centro).
  • Eventos: Aunque un Label no es interactivo por defecto, puedes agregarle eventos para que responda a ciertas acciones, como cuando el mouse pasa por encima.

¿Cómo usar javafx.scene.control.Label?

Crea un javafx.scene.control.Label

Verás que crear un Label es muy sencillo. Puedes usar el constructor para definir el texto inicial y, si lo deseas, añadir gráficos.

Ejemplo básico: un Label con texto

Label label = new Label("¡Hola, mundo!");

Ejemplo avanzado: un Label con texto e ícono

Mira que este Label combina un texto con un ícono para crear un elemento visualmente atractivo.

ImageView icon = new ImageView("ruta/imagen.png");
Label label = new Label("Inicio", icon);

Añade un Label al gráfico de escena

Para que un Label sea visible, debe añadirse al gráfico de escena dentro de un contenedor o directamente en un Scene.

Ejemplo práctico

Aquí te muestro un Label centrado en un contenedor StackPane.

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class LabelExample extends Application {
@Override
public void start(Stage primaryStage) {
Label label = new Label("Bienvenido a JavaFX");

StackPane root = new StackPane();
root.getChildren().add(label);

Scene scene = new Scene(root, 300, 200);
primaryStage.setScene(scene);
primaryStage.setTitle("Ejemplo de Label en JavaFX");
primaryStage.show();
}

public static void main(String[] args) {
launch(args);
}
}

Cómo personalizar un Label

Cambia el texto de un Label

Puedes actualizar el texto dinámicamente durante la ejecución de tu aplicación con el método setText().

label.setText("Texto actualizado");

Cambia la fuente del texto

Para personalizar la fuente, utiliza el método setFont().

label.setFont(new Font("Verdana", 20));

Personalización con CSS

Así puedes cambiar el color del texto a azul y ajusta el tamaño de la fuente.

label.setStyle("-fx-text-fill: blue; -fx-font-size: 18px;");

Ejemplo avanzado: Label dinámico

Ahora quiero mostrarte cómo actualizar el texto de un Label al interactuar con otros controles.

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class DynamicLabelExample extends Application {
@Override
public void start(Stage primaryStage) {
Label label = new Label("Estado: Inactivo");
Button button = new Button("Activar");

button.setOnAction(e -> label.setText("Estado: Activo"));

VBox root = new VBox(10, label, button);
Scene scene = new Scene(root, 300, 200);
primaryStage.setScene(scene);
primaryStage.setTitle("Label Dinámico en JavaFX");
primaryStage.show();
}

public static void main(String[] args) {
launch(args);
}
}

Cómo mostrar imágenes en un Label

Te decía que un Label también puede contener imágenes, lo que resulta útil para crear elementos visuales más ricos.

Ejemplo: Label con imagen

Este ejemplo combiné un texto y una imagen para enriquecer la interfaz.

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class LabelWithImageExample extends Application {
@Override
public void start(Stage primaryStage) {
ImageView icon = new ImageView(new Image("file:icono.png"));
Label label = new Label("Inicio", icon);

StackPane root = new StackPane();
root.getChildren().add(label);

Scene scene = new Scene(root, 300, 200);
primaryStage.setScene(scene);
primaryStage.setTitle("Label con Imagen");
primaryStage.show();
}

public static void main(String[] args) {
launch(args);
}
}

Ejemplo de Label con formato dinámico

Recuerda que puedes cambiar estilos dinámicamente según las acciones del usuario. Esto permite que el Label actúe como un indicador visual de estado.

label.setStyle("-fx-text-fill: green;");
label.setText("Acción completada");

El javafx.scene.control.Label es un componente imprescindible en JavaFX para mostrar información de manera efectiva y estilizada. Desde textos simples hasta diseños enriquecidos con imágenes y estilos dinámicos, los Label son una herramienta versátil que mejora tanto la funcionalidad como la estética de tus aplicaciones.

En el Bootcamp de Java Full Stack de KeepCoding, aprenderás a crear interfaces gráficas impactantes y funcionales, además de dominar todo el ecosistema Java. ¡Es tu momento de convertirte en un desarrollador IT de alto nivel!

Posts más leídos