La classe javax.swing.JLabel consente di mostrare un breve testo e/o un’immagine.
Per istanziare una label con un testo e un’icona, possiamo utilizzare il seguente costruttore:

JLabel(String text, Icon icon, int horizontalAlignment)

La classe javax.swing.Icon è un’interfaccia implementata, ad esempio, da javax.swing.ImageIcon. Possiamo dunque utilizzare un oggetto di questa classe per assegnare un’icona ad una label:

import javax.swing.JLabel;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.ImageIcon;
import javax.swing.BorderFactory;
import java.awt.GridLayout;
import java.awt.Color;

public class GuiTest extends JFrame
{
	public GuiTest(String text)
	{
		super(text);

		ImageIcon icon = new ImageIcon("./images/logo.gif");

		JLabel lblA =
			createLabel("Logo", icon, JLabel.CENTER, JLabel.BOTTOM);
		JLabel lblB =
			createLabel("Logo", icon, JLabel.RIGHT, JLabel.CENTER);

		JPanel panel = new JPanel();
		panel.setLayout(new GridLayout(1, 3, 5, 5));
		panel.add(lblA);
		panel.add(lblB);

		this.setContentPane(panel);
		this.setSize(200, 100);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	public JLabel createLabel(String text, ImageIcon icon,
			int hPos, int vPos)
	{
		JLabel label = new JLabel(text, icon, JLabel.CENTER);
		label.setHorizontalTextPosition(hPos);
		label.setVerticalTextPosition(vPos);
		label.setBorder( BorderFactory.createLineBorder(Color.BLACK) );
		return label;
	}

	public static void main(String[] args)
	{
		new GuiTest("Label Test").setVisible(true);
	}
}

Come si può notare da questo esempio, indichiamo la posizione orizzontale e verticale del testo rispetto all’immagine, ottenendo questo risultato:



JLabel

E’ anche possibile assegnare alla label un’icona da mostrare quando la label viene disabilitata (richiamando setEnabled(false)), utilizzando il metodo

void setDisabledIcon(Icon disabledIcon)

Di default, l’icona mostrata quando la label è disabilitata è generata automaticamente, ingrigiendo quella esistente:

import javax.swing.JLabel;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.ImageIcon;
import javax.swing.BorderFactory;
import java.awt.GridLayout;
import java.awt.Color;

public class GuiTest extends JFrame
{
	public GuiTest(String text)
	{
		super(text);

		ImageIcon icon = new ImageIcon("./images/logo.gif");
		ImageIcon disabledIcon = new ImageIcon("./images/denied.gif");

		JLabel lblA =
			createLabel("Logo", icon, JLabel.CENTER, JLabel.BOTTOM);
		JLabel lblB =
			createLabel("Logo", icon, JLabel.RIGHT, JLabel.CENTER);
		JLabel lblC =
			createLabel("Logo", icon, JLabel.CENTER, JLabel.TOP);

		lblC.setDisabledIcon(disabledIcon);
		lblB.setEnabled(false);
		lblC.setEnabled(false);

		JPanel panel = new JPanel();
		panel.setLayout(new GridLayout(1, 3, 5, 5));
		panel.add(lblA);
		panel.add(lblB);
		panel.add(lblC);

		this.setContentPane(panel);
		this.setSize(300, 100);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	public JLabel createLabel(String text, ImageIcon icon,
			int hPos, int vPos)
	{
		JLabel label = new JLabel(text, icon, JLabel.CENTER);
		label.setHorizontalTextPosition(hPos);
		label.setVerticalTextPosition(vPos);
		label.setBorder( BorderFactory.createLineBorder(Color.BLACK) );
		return label;
	}

	public static void main(String[] args)
	{
		new GuiTest("Label Test").setVisible(true);
	}
}

Il risultato ottenuto è questo:



JLabel