JXTitledPanel - ein Panel mit Titelzeile
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);
}
}
1) JXTitledPanel
gehört zur
SwingX-Bibliothek, die gesondert in den Classpath eingebunden werden
muss. Für weitere Informationen siehe SwingX.
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.