Tech and Media Labs
This site uses cookies to improve the user experience.




JavaFX Label

Jakob Jenkov
Last update: 2016-05-13

The JavaFX Label control can display a text or image label inside a JavaFX GUI. The label control must be added to the scene graph to be visible. The JavaFX Label control is represented by the class javafx.scene.control.Label .

Creating a Label

You create a label control instance by creating an instance of the Label class. Here is a JavaFX Label instantiation example:

Label label = new Label("My Label");

As you can see, the text to display in the label is passed as parameter to the Label constructor.

Adding a Label to the Scene Graph

To make the Label visible you must add it to the scene graph. This means adding it to a Scene object, or as child of a layout which is attached to a Scene object.

Here is an example that attaches a JavaFX Label to the scene graph:

package com.jenkov.javafx.controls;

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

public class LabelExperiments extends Application  {


    @Override
    public void start(Stage primaryStage) throws Exception {
        primaryStage.setTitle("HBox Experiment 1");

        Label label = new Label("My Label");

        Scene scene = new Scene(label, 200, 100);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

Notice that the Label is added directly to the Scene object. Normally you would nest the Label inside a layout component of some kind. I have left that out here to keep the example simple. See the tutorials about layout components to see how they work.

The result of running the above JavaFX Label example is an application that looks like this:

A JavaFX Label component displayed in the scene graph.

Displaying Images in a Label

It is possible to display an image inside a label next to the label text. The JavaFX Label class contains a constructor that can take a Node as extra parameter. Here is a JavaFX label example that adds an image to the label using an JavaFX ImageView component:

package com.jenkov.javafx.controls;

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.stage.Stage;

import java.io.FileInputStream;


public class LabelExperiments extends Application  {


    @Override
    public void start(Stage primaryStage) throws Exception {
        primaryStage.setTitle("HBox Experiment 1");

        FileInputStream input = new FileInputStream("resources/images/iconmonstr-home-6-48.png");
        Image image = new Image(input);
        ImageView imageView = new ImageView(image);


        Label label = new Label("My Label", imageView);

        Scene scene = new Scene(label, 200, 100);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

The result of running the above JavaFX Label example is an application that looks like this:

A JavaFX Label component with an image embedded.

Changing the Text of a Label

You can change the text of a label using its setText() method. This can be done while the application is running. See the JavaFX Button tutorial for an example that changes the text of a label when a button is clicked.

Jakob Jenkov




Copyright  Jenkov Aps
Close TOC