Wie lässt sich der Textsatz auf einem JLabel einstellen?

Zentrierter Text auf JLabel

Text lässt sich auf einem JLabel mit Hilfe des Interfaces SwingConstants horizontal und vertikal setzen. Dies kann auf zweierlei Weise geschehen. Entweder man importiert das Interface javax.swing.SwingConstants und greift direkt auf dessen Felder zu oder man macht sich zunutze, dass die Klasse JLabel das Interface implementiert.

Das Code-Beispiel demonstriert beides. In der Methode createLabel() wird das Label erzeugt. Hierzu wird ein Konstruktor verwendet, der direkt eine int-Konstante zur Angabe des horizontalen Textsatzes als zweiten Parameter übergeben bekommt. Im Beispiel ist dies der o.a. Zugriff auf das Interface SwingConstants. Selbstverständlich können hier statt CENTER weitere Konstanten angegeben werden.
Es muss beachtet werden, dass über den Konstruktor in der Tat nur der horizontale Satz angegeben werden kann. Der vertikale Textsatz lässt sich nur durch gesonderten Aufruf der Methode setVerticalAlignment() festlegen. Als Parameter wird in diesem Fall die durch JLabel von SwingConstants geerbte Variable BOTTOM verwendet. Analog kann der horizontale Textsatz neben der o.a. Variante auch durch die Methode setHorizontalAlignment() festgelegt werden.

import java.awt.Color;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.border.LineBorder;

public class LabelZentriert {
    public LabelZentriert() {
        init();
    }

    private void init() {
        JFrame frame = new JFrame("Label zentriert");
        frame.add(createLabel());
        frame.setSize(300, 180);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    private static JLabel createLabel() {
        JLabel label = new JLabel("Ein Text", SwingConstants.CENTER);
        label.setVerticalAlignment(JLabel.BOTTOM);
        label.setBorder(new LineBorder(Color.BLACK));
        return label;
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new LabelZentriert());
    }
}

Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.