Working with JLabel in Java Swing with code examples

JLabel is a component in Java's Swing library that displays text, an image, or both.

It is commonly used in graphical user interfaces (GUIs) to display static information such as labels for text fields, status messages, or images.

A JLabel can:

Display a single line of text.
Display an image or icon.
Be aligned horizontally and vertically.
Respond to changes dynamically if linked to other components (though it's not directly interactive).
Basic Structure of a JLabel

To create a label in Swing, the JLabel class is used. It is part of the javax.swing package, so you need to import it.

Basic JLabel Constructor:

JLabel label = new JLabel("Text for Label");

You can add this label to a container, such as a JFrame, to display it on the screen.

1. Creating a Simple JLabel

Let's start with a basic example of creating a JLabel and adding it to a JFrame.

Example 1: Basic JLabel

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;

public class JLabelExample1 {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            JFrame frame = new JFrame("JLabel Example");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(300, 100);
            
            JLabel label = new JLabel("Hello, Swing!"); // Create a label with text
            
            frame.add(label); // Add the label to the frame
            frame.setVisible(true); // Make the frame visible
        });
    }
}

Explanation:

We create a JFrame and a JLabel with the text “Hello, Swing!”.
The label is added to the frame, and the frame is set visible to display the label.

2. Setting Text and Icons in JLabel

A JLabel can display text, icons, or both. You can create an icon from an image file and set it in a label.

Example 2: JLabel with Text and Icon

import javax.swing.*;
import java.awt.*;

public class JLabelExample2 {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            JFrame frame = new JFrame("JLabel with Text and Icon");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(400, 200);
            
            // Create an icon from an image
            Icon icon = new ImageIcon("path_to_image.png"); // Use a valid path to an image

            // Create a label with text and an icon
            JLabel label = new JLabel("Hello, Swing with Icon!", icon, JLabel.CENTER);

            label.setHorizontalTextPosition(JLabel.RIGHT); // Text to the right of the icon
            label.setVerticalTextPosition(JLabel.CENTER); // Center the text vertically

            frame.add(label);
            frame.setVisible(true);
        });
    }
}

Explanation:

In this example, we create an Icon using ImageIcon and set it along with the text in the JLabel.
We control the position of the text relative to the icon using setHorizontalTextPosition() and setVerticalTextPosition().

3. Customizing Text and Font in JLabel

You can customize the text's appearance in a JLabel by changing its font, size, and style. This can be done using the setFont() method.

Example 3: Customizing Font in JLabel

import javax.swing.*;
import java.awt.*;

public class JLabelExample3 {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            JFrame frame = new JFrame("Custom Font JLabel");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(400, 200);
            
            JLabel label = new JLabel("Styled Text");
            
            // Set custom font: Font(name, style, size)
            label.setFont(new Font("Serif", Font.BOLD, 24));

            // Set text color
            label.setForeground(Color.BLUE);

            frame.add(label);
            frame.setVisible(true);
        });
    }
}

Explanation:

We create a Font object with custom properties (e.g., font name, style, size) and apply it to the label using setFont().
We also change the text color using setForeground() to set a blue color

4. Aligning Text in JLabel

You can control the alignment of the text or icon in a JLabel both horizontally and vertically using setHorizontalAlignment() and setVerticalAlignment().

Example 4: Aligning Text in JLabel

import javax.swing.*;
import java.awt.*;

public class JLabelExample4 {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            JFrame frame = new JFrame("JLabel Alignment Example");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(300, 200);
            
            JLabel label = new JLabel("Aligned Text", JLabel.CENTER); // Center the text horizontally
            label.setVerticalAlignment(JLabel.TOP); // Align the text to the top

            frame.add(label);
            frame.setVisible(true);
        });
    }
}

Explanation:

The label's text is centered horizontally using JLabel.CENTER.
The vertical alignment is set to JLabel.TOP, positioning the text at the top of the label.

5. JLabel with HTML Content

JLabel supports simple HTML formatting, allowing you to add basic HTML tags to display styled text.

Example 5: JLabel with HTML

import javax.swing.*;

public class JLabelExample5 {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            JFrame frame = new JFrame("JLabel with HTML Example");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(400, 200);
            
            // Use HTML to style text
            JLabel label = new JLabel("<html><body style='color:red;'>"
                                      + "<h1>Styled Text</h1>"
                                      + "<p>This is a paragraph in <b>bold</b> and <i>italic</i>.</p>"
                                      + "</body></html>");
            
            frame.add(label);
            frame.setVisible(true);
        });
    }
}

Explanation:

The HTML content is wrapped insideandtags.

6. Updating the Text Dynamically

You can dynamically update the text displayed in a JLabel at runtime using the setText() method.

Example 6: Dynamic Text Update in JLabel

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class JLabelExample6 {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            JFrame frame = new JFrame("Dynamic JLabel Example");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(300, 150);
            
            JLabel label = new JLabel("Initial Text");
            
            JButton button = new JButton("Change Text");
            button.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    label.setText("Text Updated!");
                }
            });

            frame.setLayout(new java.awt.FlowLayout());
            frame.add(label);
            frame.add(button);
            frame.setVisible(true);
        });
    }
}

Explanation:

In this example, the label's text is updated when the button is clicked.
The setText() method allows the text displayed in the label to change dynamically.

7. JLabel with Tooltips

You can add a tooltip to a JLabel using the setToolTipText() method, which will display additional information when the user hovers over the label.

Example 7: Adding a Tooltip to JLabel

import javax.swing.*;

public class JLabelExample7 {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            JFrame frame = new JFrame("JLabel with Tooltip Example");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(300, 150);
            
            JLabel label = new JLabel("Hover over me!");
            label.setToolTipText("This is a tooltip that appears when you hover over the label.");

            frame.add(label);
            frame.setVisible(true);
        });
    }
}

Explanation:

The setToolTipText() method adds a tooltip to the label, which appears when the user hovers over the label.

8. JLabel with Borders

You can add a border around a JLabel to enhance its visual appearance using setBorder().

Example 8: JLabel with a Border

import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;

public class JLabelExample8 {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            JFrame frame = new JFrame("JLabel with Border Example");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(300, 150);
            
            JLabel label = new JLabel("Label with a border!");
            
            // Create and set a border
            Border border = BorderFactory.createLineBorder(Color.BLACK, 2);
            label.setBorder(border);
            
            frame.add(label);
            frame.setVisible(true);
        });
    }
}

Explanation:

A black line border is added to the JLabel using BorderFactory.createLineBorder().
The setBorder() method applies the border to the label.

Conclusion

In Java Swing, JLabel is a versatile component that can display text, images, or both, and can be easily customized with fonts, colors, alignment, HTML formatting, and more.

You can also dynamically update the text and even add interactive elements like tooltips. Understanding how to use JLabel effectively allows you to build informative and responsive GUIs.

Summary of Key Points:

Basic Text: Use new JLabel(“text”) to create a label with text.
Icons: Combine text and images using JLabel(icon) or JLabel(text, icon, alignment).
Font Customization: Change font using setFont() and text color using setForeground().
Alignment: Control text and icon alignment using setHorizontalAlignment() and setVerticalAlignment().
Dynamic Updates: Use setText() to change label content dynamically.
HTML Support: Style label text using basic HTML.
Tooltips: Add tooltips using setToolTipText().
Borders: Add a border to a label using setBorder().

Related posts

Tutorial on Java GroupLayout in Swing

Tutorial on Java GridBagLayout in Swing

Tutorial on Java GridLayout in Swing