JLabel mit Padding

Die statische Methode BorderFactory.createCompoundBorder() erlaubt es, zwei Border miteinander zu kombinieren. Ein einfacher, farbiger Rand sorgt für die Begrenzung, ein leerer Rand bestimmt den Abstand des Labelinhaltes zur äußeren Labelgrenze.

Das Beispiel zeigt ein einfaches, von JFrame abgeleitetes Fenster mit zwei Labeln. Beide enthalten einen einfachen Text, der nebenbei demonstriert, dass ein JLabel auch mit formatiertem HTML-Text versehen werden kann. Für das erste Label werden zwei verschiede Border deklariert:

  1. Eine LineBorder, der ein Color-Objekt für die Randfarbe übergeben wird
  2. Eine EmptyBorder, die selbst unsichtbar ist und lediglich einen Abstand zum Inhalt definiert. Diesem Objekt werden vier int-Werte übergeben. Für die Feinabstimmung bestimmen diese die Abstände in der Reihenfolge oben - rechts - unten - links.

Diese beiden Randtypen können durch die statische Methode BorderFactory.createCompoundBorder() miteinander kombiniert und auf konventionelle Weise auf das JLabel gesetzt werden.

import java.awt.Color;
import java.awt.FlowLayout;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;

public class LabelPadding extends JFrame {

    public LabelPadding() {

        JLabel label1 = new JLabel("<html>einfacher Text<br>mit Zeilenumbruch<br>und Padding</html>");
        EmptyBorder eBorder = new EmptyBorder(2, 10, 2, 10); // oben, rechts, unten, links
        LineBorder lBorder = new LineBorder(new Color(100, 100, 100));
        label1.setBorder(BorderFactory.createCompoundBorder(lBorder, eBorder));

        JLabel label2 = new JLabel("<html>einfacher Text<br>mit Zeilenumbruch<br>und ohne Padding</html>");
        label2.setBorder(lBorder);

        this.add(label1);
        this.add(label2);
        
        this.setLayout(new FlowLayout());
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.pack();
        this.setLocationRelativeTo(null);
        this.setTitle("Padding mit JLabel");
        this.setVisible(true);
    }

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

Screenshot Label mit Padding