JXTitledPanel - ein Panel mit Titelzeile

JXTitledPanel1 ist von JPanel und JXPanel abgeleitet und besitzt eine Titelzeile und einen separat konfigurierbaren Inhaltsbereich.

Im Beispiel wird zunächst ein einfaches JPanel zur Demonstrationszwecken mit einem funktionslosen Button und einem Label versehen. Es dient dazu, den Inhaltsbereich des JXTitledPanel zu stellen und wird bei dessen Instanzierung als zweiter Parameter übergeben. Die Komponenten können nicht direkt auf den Inhaltsbereich gesetzt werden, da der Konstruktor hier einen Container erwartet. Den ersten Parameter stellt ein String-Argument. Es wird als Überschrift im Titelbereich dargestellt.

Die folgenden Zeilen zeigen die Konfigurierung des Titelzeilen-Hintergrundes. Die Klasse JXTitledPanel besitzt hierzu die Methode setTitlePainter(), die als Parameter ein Objekt vom Typ org.jdesktop.swingx.painter.Painter erwartet. SwingX definiert im gleichen Package eine ganze Reihe verschiedener Painter, die das genannte Interface implementieren. Der hier verwendete MattePainter dient zum gleichmäßigen Füllen von Hintergrundflächen. Ihm wird ein GradientPaint-Objekt übergeben. Die Methode setPaintStreched() der Klasse AbstractAreaPainter sorg dafür, dass der Gradient auf der gesamten zu füllenden Fläche erscheint.

Die Vordergrundfarbe der Titelzeile lässt sich durch die Methode setTitleForeground() setzen. Ihr wird ein Color-Objekt übergeben.

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

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import org.jdesktop.swingx.JXTitledPanel;
import org.jdesktop.swingx.painter.MattePainter;

public class JXTitledPanelBsp {


    private static final Color TOP_BG_COLOR = new Color(1f,.6f, .5f);
    private static final Color BOTTOM_BG_COLOR = new Color(.6f, .3f, .3f);
    private static final Color FG_COLOR = new Color(5, 10, 40);
    
    public static void main(String[] args) {
        JPanel cPanel = new JPanel(new FlowLayout());
        cPanel.add(new JLabel("Text"));
        cPanel.add(new JButton("klick mich"));
        JXTitledPanel tPanel = new JXTitledPanel("\u00DCberschrift", cPanel);
        GradientPaint paint = new GradientPaint(0f, 0f, TOP_BG_COLOR, 0f, 1f, BOTTOM_BG_COLOR);
        MattePainter painter = new MattePainter(paint);
        painter.setPaintStretched(true);
        tPanel.setTitlePainter(painter);
        tPanel.setTitleForeground(FG_COLOR);

        JFrame frame = new JFrame();
        frame.add(tPanel);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.setTitle("JXTitledPanel- Beispiel");
        frame.setSize(300, 300);
        frame.setVisible(true);
    }
}

JXFrame

1) JXTitledPanel gehört zur SwingX-Bibliothek, die gesondert in den Classpath eingebunden werden muss. Für weitere Informationen siehe SwingX.