Literatur

JComboBox

Die Klasse JComboBox dient dazu, sogenannte Drop-Down-Listen oder, auf deutsch, Klapplisten zu erstellen. Eine JComboBox enthält eine Liste von Einträgen, die durch einen Klick aufgeklappt wird, so dass ein Eintrag ausgewählt werden kann. Sie wird meistens eingesetzt, wenn eine Auswahl aus einer Reihe von Möglichkeiten getroffen werden soll. Die Auswahl aus einem kleineren Umfang von Optionen würde man eher durch JRadioButtons realisieren.

Man findet solche Klapplisten z.B. häufig in der Werkzeugleiste eines Textverarbeitungsprogramms zum Einstellen der Textgröße oder der Schriftart.

Neben dem parameterlosen Standardkonstruktor besitzt die Klasse JComboBox drei Konstruktoren, die wir in folgender Tabelle kurz näher erläutern wollen.

Konstruktor Kurzbeschreibung
JComboBox(ComboBoxModel aModel) Hier wird eine JComboBox mit einem ComboBoxModel erstellt. Über das ComboBoxModel bezieht die JComboBox die Einträge und erfährt, welcher gerade selektiert ist.
JComboBox(Object[] items) Dieser Konstruktor erstellt ein JComboBox-Objekt und fügt direkt die Elemente aus dem Array zur Auswahl hinzu.
JComboBox(Vector items) Unterscheidet sich vom oberen Konstruktor darin, dass hier an Stelle des Arrays ein Vector mit den Elementen übergeben wird.


Nachfolgend ein kleines Beispiel für eine JComboBox:

 
import javax.swing.*;
 
public class JComboBoxBeispiel {
 
    public static void main(String[] args) {
        JFrame meinJFrame = new JFrame();
        meinJFrame.setTitle("JComboBox Beispiel");
        meinJFrame.setSize(250, 250);
        JPanel panel = new JPanel();
 
        JLabel frage = new JLabel("Aus welchem Bundesland kommst du?");
        panel.add(frage);
 
        // Array für unsere JComboBox
        String comboBoxListe[] = {"Baden-Württemberg", "Bayern",
            "Berlin", "Brandenburg", "Bremen",
            "Hamburg", "Hessen", "Mecklenburg-Vorpommern",
            "Niedersachsen", "Nordrhein-Westfalen", "Rheinland-Pfalz",
            "Saarland", "Sachsen", "Sachsen-Anhalt",
            "Schleswig-Holstein", "Thüringen"};
 
        //JComboBox mit Bundesländer-Einträgen wird erstellt
        JComboBox bundeslandAuswahl = new JComboBox(comboBoxListe);
 
        //JComboBox wird Panel hinzugefügt
        panel.add(bundeslandAuswahl);
 
        meinJFrame.add(panel);
        meinJFrame.setVisible(true);
 
    }
}

Wir haben zunächst ein Array mit den Listenelementen erzeugt. Anschließend haben wir ein JComboBox-Objekt mit dem zweiten Konstruktor der obigen Tabelle erstellt, dem wir das Array übergeben. Anschließend haben wir die JComboBox unserem JPanel hinzugefügt.

Wenn Sie den obigen Java Quellcode ausführen erhalten Sie folgendes Bild:

Standardmäßig ist zu Beginn das erste Objekt unseres Arrays, welches wir dem Konstruktor beim Erstellen der JComboBox übergeben haben, ausgewählt. Wenn Sie den Pfeil der JComboBox anklicken, so klappt die Box auf und Sie werden die nächsten Elemente unseres Arrays sehen. Wir haben hier an dieser Stelle bewusst ein String-Array gewählt, so dass Sie direkt sinnvolle Einträge in der JComboBox haben. Wie Sie an den obigen Konstruktoren gesehen haben, werden standardmäßig Objekte vom Typ Object, also der Oberklasse aller Objekte, in einem Array oder Vector übergeben.  Im Fall von Strings "weiß" die JComboBox, dass sie den Text anzeigen muss. Wenn Sie allerdings in einer JComboBox komplexere Objekte z.B. von selbst programmierten Klassen, übergeben, ist nicht klar, wie diese Objekte darzustellen sind und sie würden mit ihrer Speicheradresse in der Klappliste angezeigt werden. Dieses Problem kann man jedoch umgehen, indem man ein eigenes ComboBoxModel erstellt, welche dem ersten vorgestellten Konstruktor übergeben wird. Wie dies im Einzelnen funktioniert, erfahren Sie im folgenden Kapitel.

Die Klasse JComboBox besitzt neben den Standardmethoden für die Bedienelemente eine Reihe eigener Methoden, von welchen wir Ihnen in folgender Tabelle einige wichtige kurz erläutern wollen.

Methode Beschreibung
void addActionListener(ActionListener l) Diese Methode fügt der JComboBox einen ActionListener hinzu, der Ereignisse vom Typ ActionEvent empfängt.
void addItem(Object anObject) Hier wird ein Objekt in die Liste der JComboBox aufgenommen.
void addItemListener(ItemListener aListener) Diese Methode fügt der JComboBox einen ItemListener hinzu, der Ereignisse vom Typ ItemEvent empfängt. Ein ItemEvent wird erzeugt, wenn ein Eintrag in der JComboBox selektiert oder deselektiert wird.
void addPopupMenuListener(PopupMenuListener l) Hier kann man einen eigenen PopupMenuListener hinzufügen, der "angesprochen" wird, wenn die Combobox auf- oder zugeklappt wird.
ActionListener[] getActionListeners() Diese Methode liefert alle hinzugefügten ActionListener in einem Array zurück.
Object getItemAt(int index) Hier wird das Objekt aus der Liste der JComboBox zurückgegeben, welches den übergebenen Index hat. Hierbei ist zu beachten, dass der Index wie immer bei 0 beginnt.
int getItemCount() Diese Methode liefert die Anzahl der Objekte innerhalb der JComboBox zurück.
ItemListener[] getItemListeners() Diese Methode gibt alle hinzugefügten ItemListener gebündelt in einem Array zurück.
int getMaximumRowCount() Diese Methode liefert den Wert für die maximale Anzahl an Elementen, die beim Aufklappen der JComboBox angezeigt werden, ohne dass die Scrollbar benötigt wird.
ComboBoxModel getModel() Diese Methode liefert das ComboBoxModel zurück, welches der JComboBox zugrunde liegt.
PopupMenuListener[] getPopupMenuListeners() Diese Methode liefert alle hinzugefügten PopupMenuListener gebündelt in einem Array zurück.
ListCellRenderer getRenderer() Hier wird der verwendete ListCellRenderer zurückgegeben. Dieser beschreibt, wie die Listeneinträge dargestellt werden sollen.
int getSelectedIndex() Hier wird der Index des in der JComboBox ausgewählten Elementes zurückgegeben.
Object getSelectedItem() Hier wird das in der JComboBox ausgewählte Objekt zurückgegeben. Um mit dem Objekt weiter zu arbeiten, ist eine Typumwandlung zu der jeweiligen Klasse nötig.
Object[] getSelectedObjects() Hier werden die ausgewählten Objekte der JComboBox in einem Array zurück gegeben, wenn eine Mehrfachauswahl zugelassen wird. Anmerkung: Von einer Mehrfachauswahl ist  bei einer JComboBox eher abzuraten, da es für diesen Zweck passendere GUI-Elemente gibt.
void hidePopup() Mit dieser Methode kann man die aufgeklappte Liste wieder verschwinden lassen.
void insertItemAt(Object anObject, int index) Diese Methode fügt ein Objekt an der übergebenen Position in der JComboBox ein.
boolean isEditable() Diese Methode gibt Auskunft darüber, ob man in der JComboBox einen eigenen Text schreiben darf (true) oder nicht (false).
boolean isPopupVisible() Hier wird true zurückgegeben, wenn die aufgeklappte Liste noch sichtbar ist, ansonsten false.
void removeActionListener(ActionListener l) Diese Methode entfernt den übergebenen ActionListener wieder von der JComboBox.
void removeAllItems() Hier werden alle in der JComboBox enthaltenen Objekte entfernt.
void removeItem(Object anObject) Hier wird nur das übergebene Objekt aus der JComboBox entfernt.
void removeItemAt(int anIndex) Diese Methode entfernt das Objekt an der übergebenen Position.
void removeItemListener(ItemListener aListener) Diese Methode entfernt den übergebenen ItemListener wieder von der JComboBox.
void removePopupMenuListener(PopupMenuListener l) Diese Methode entfernt den übergebenen PopupMenuListener wieder von der JComboBox.
void setEditable(boolean aFlag) Mit dieser Methode kann man dem Benutzer die Eingabe von Text in die JComboBox erlauben (true) oder verbieten (false). Standardmäßig ist eine JComboBox zunächst nicht editierbar. Es macht nur Sinn, in der JComboBox eigenen Text zu erlauben, wenn die zur Auswahl stehenden Optionen nicht genau festgelegt sind.
void setEnabled(boolean b) Mit dieser Methode kann man die JComboBox aktivieren (true) oder deaktivieren (false).
void setMaximumRowCount(int count) Über diese Methode wird festgesetzt, wie viele Elemente in dem aufklappbaren Menü ohne Scrollbar angezeigt werden können.
void setModel(ComboBoxModel aModel) Hier kann man ein ComboBoxModel für die JComboBox setzen.
void setRenderer(ListCellRenderer aRenderer) Hier kann man einen ListCellRenderer setzen, der beschreibt, wie die Einträge dargestellt werden sollen.
void setSelectedIndex(int anIndex) Mit dieser Funktion kann man ein Element mit dem übergebenem Index auf "selektiert" setzen.
void setSelectedItem(Object anObject) Hier kann man die Auswahl direkt auf ein bestimmtes Objekt setzen.
void showPopup() Diese Methode klappt die Klappliste auf.

Im nun folgenden Kapitel gehen wir auf das Interface ComboBoxModel ein.


Unterthemen: