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.
Eine Änderung der Konstante JTabbedPane.SCROLL_TAB_LAYOUT in JTabbedPane.WRAP_TAB_LAYOUT würde folgendes Bild ergeben:
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.
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. |