Literatur

JTabbedPane

Die Klasse javax.swing.JTabbedPane ist ein Container für sogenannte Registerkarten, die auch als Tabs bezeichnet werden. Registerkarten werden Ihnen sicher bereits in anderen Anwendungen begegnet sein. In moderneren Browsern können Sie z.B. einzelne Webseiten in je einem separaten Tab darstellen. Für jede Registerkarte gibt es eine Schaltfläche, den sogenannten Reiter, über den schnell zwischen den verschiedenen Registerkarten gewechselt werden kann.

Die einzelnen Registerkarten wiederum sind Komponenten (meistens JPanel), die dem JTabbedPane hinzugefügt werden. 

Schauen wir zunächst einmal zwei Konstruktoren an, welche es neben dem Standardkonstruktor gibt, den wir hier nicht explizit erwähnen wollen.

Konstruktor Beschreibung
JTabbedPane(int tabPlacement) Dieser Konstruktor erzeugt ein JTabbedPane-Objekt. Als Parameter wird ein int-Wert übergeben, welcher die Ausrichtung der Registerkarten vorgibt.
JTabbedPane(int tabPlacement, int tabLayoutPolicy) Wie oben, jedoch mit einem zweiten Parameter, über den die Anordnung der Registerkarten vorgegeben wird (z.B. alle Tabs in ein Zeile).

Für den Übergabeparameter tabPlacement gibt es folgende Konstanten:

Konstante Beschreibung
JTabbedPane.TOP Die Tab-Leiste befindet sich oberhalb der Registerkarten-Inhalte
JTabbedPane.BOTTOM Die Tab-Leiste befindet sich unterhalb der Registerkarten-Inhalte
JTabbedPane.LEFT Die Tab-Leiste befindet sich links von den Registerkarten-Inhalten
JTabbedPane.RIGHT Die Tab-Leiste befindet sich rechts von den Registerkarten-Inhalten

Für den Übergabeparameter tabLayoutPolicy gibt es nur zwei Konstanten:

Konstante Beschreibung
JTabbedPane.WRAP_TAB_LAYOUT Hier werden die Registerkarten, sollten Sie aufgrund der Größe des JTabbedPanes nicht mehr nebeneinander bzw. untereinander passen, in die nächste Reihe verschoben.
JTabbedPane.SCROLL_TAB_LAYOUT Sobald die Registerkarten nicht mehr in einer Reihe passen, erscheinen automatisch Schaltflächen zum Scrollen, damit auch die nicht sichtbaren Reiter erreicht werden können.

Wir wollen nun im folgenden Beispiel ein JTabbedPane mit mehreren Registerkarten erstellen:

 
// Import-Anweisungen
import java.awt.Color;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
 
public class JTabbedPaneBeispiel
{
    // main-Methode
    public static void main(String[] args)
    {
        // Erzeugung eines neuen Dialoges
        JDialog meinJDialog = new JDialog();
        meinJDialog.setTitle("JPanel Beispiel");
        meinJDialog.setSize(450,300);
 
        // Hier erzeugen wir unsere JPanels
        JPanel panelRot = new JPanel();
        JPanel panelBlue = new JPanel();
        JPanel panelGreen = new JPanel();
        JPanel panelYellow = new JPanel();
        JPanel panelPink = new JPanel();
        JPanel panelBlack = new JPanel();
 
        // Hier setzen wir die Hintergrundfarben für die JPanels
        panelRot.setBackground(Color.RED);
        panelBlue.setBackground(Color.BLUE);
        panelGreen.setBackground(Color.GREEN);
        panelYellow.setBackground(Color.YELLOW);
        panelPink.setBackground(Color.PINK);
        panelBlack.setBackground(Color.BLACK);
 
        // Erzeugung eines JTabbedPane-Objektes
        JTabbedPane tabpane = new JTabbedPane
            (JTabbedPane.TOP,JTabbedPane.SCROLL_TAB_LAYOUT );
 
        // Hier werden die JPanels als Registerkarten hinzugefügt
        tabpane.addTab("Ich bin rot", panelRot);
        tabpane.addTab("Ich bin blau", panelBlue);
        tabpane.addTab("Ich bin grün", panelGreen);
        tabpane.addTab("Ich bin gelb", panelYellow);
        tabpane.addTab("Ich bin pink", panelPink);
        tabpane.addTab("Ich bin schwarz", panelBlack);
 
        // JTabbedPane wird unserem Dialog hinzugefügt
        meinJDialog.add(tabpane);
        // Wir lassen unseren Dialog anzeigen
        meinJDialog.setVisible(true);
    }
}
 

Wir erstellen zunächst sechs JPanels in verschiedenen Farben. Anschließend erzeugen wir ein JTabbedPane-Objekt mit Hilfe des zweiten der oben vorgestellten Konstruktoren. Diesem fügen wir mit der Methode addTab die JPanel-Objekte und einen passenden Titel, der hinterher auf dem Reiter erscheinen wird, hinzu. Zum Schluss fügen wir unserem Dialog den JTabbedPane hinzu und lassen ihn anzeigen.

Die Registerkarten sind aufgrund des eingestellten Layouts SCROLL_TAB_LAYOUT nebeneinander aufgelistet. Da die sechs Reiter jedoch nicht komplett angezeigt werden, erscheinen zusätzlich Schaltflächen in Form von Pfeilen, über die die nicht sichtbaren Registerkarten angezeigt werden können.

 

JTabbedPane in unserem JDialog

 

Eine Änderung der Konstante JTabbedPane.SCROLL_TAB_LAYOUT in JTabbedPane.WRAP_TAB_LAYOUT würde folgendes Bild ergeben:

JTabbedPane mit WRAP_TAB_LAYOUT

 

Eine Änderung der Konstante JTabbedPane.TOP in JTabbedPane.LEFT würde bei dem JTabbedPane.WRAP_TAB_LAYOUT dazu führen, dass die Tab-Leiste am linken Rand positioniert wird.

JTabbedPane LEFT Position

 

Die Klasse JTabbedPane hat einige spezielle Methoden, von denen wir hier einige wichtige aufführen möchten:

Methode Kurzbeschreibung
add bzw. addTab Diese Methoden gibt es mit unterschiedlichen Übergabeparametern. Beide Arten erfüllen denselben Zweck, nämlich eine neue Registerkarte (Tab) hinzuzufügen.
void addChangeListener(ChangeListener l) Mit dem Hinzufügen eines ChangeListeners kann festgestellt werden, wenn der Anwender zu einem anderen Tab wechselt.
Component getSelectedComponent() Über diese Methode erhält man die gerade selektierte Tab-Komponente.
int getSelectedIndex() Mit dieser Methode erhält man den Index (Position) des ausgewählten Tabs.
Component getTabComponentAt(int index) Diese Methode liefert die zum übergebenen Index passende Tab-Komponente zurück.
int getTabCount() Liefert die Anzahl der Registerkarten zurück.
int indexOfComponent(Component component) Gibt den zur übergebenen Tab-Komponente passenden Index zurück.
remove Die Methode remove gibt es ebenso wie die Methode add in verschiedenen Varianten. Sie dient dazu, Registerkarten zu entfernen.
void setSelectedComponent(Component c) Über diese Methode wird der Tab mit der übergebenen Komponente selektiert.
void setSelectedIndex(int index) Mit dieser Methode wird der zum übergebenen Index passende Tab selektiert.