JLabel mit Padding
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:
- Eine LineBorder, der ein Color-Objekt für die Randfarbe übergeben wird
- 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();
}
}