Literatur

JList

Die Komponente JList dient der Anzeige einer Liste und der Auswahl einzelner darin befindlicher Elemente. Üblicherweise wird die JList im Gegensatz zur JComboBox verwendet, wenn mehrere Einträge ausgewählt werden können. Es ist aber auch möglich, für die JList festzulegen, dass nur maximal ein Eintrag selektiert werden kann.

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

Konstruktor Kurzbeschreibung
JList(ListModel dataModel) Hier wird eine JList mit einem ListModel erstellt, ähnlich wie bei der JComboBox.
JList(Object[] listData) Dieser Konstruktor erstellt ein JList-Objekt und fügt gleich die Elemente aus dem Array zur Auswahl hinzu.
JList(Vector listData) Wie der vorherige Konstruktor, mit dem Unterschied, dass anstatt eines Arrays ein Vector mit den Listeneinträgen übergeben wird.


Nachfolgend ein kleines Beispiel:

 
import javax.swing.*;
 
public class JListBeispiel {
 
    public static void main(String[] args) {
        JFrame meinJFrame = new JFrame();
        meinJFrame.setTitle("JListBeispiel");
        meinJFrame.setSize(300, 300);
        JPanel panel = new JPanel();
 
        JLabel frage = new JLabel("Für welche Themen interessierst du dich?");
        panel.add(frage);
 
        // Array für unsere JList
        String interessen[] = {"Politik", "Autos", "Mode", 
            "Film- und Fernsehen", "Computer", "Tiere", "Sport"};
 
        //JList mit Einträgen wird erstellt
        JList themenAuswahl = new JList(interessen);
 
        //JList wird Panel hinzugefügt
        panel.add(themenAuswahl);
 
        meinJFrame.add(panel);
        meinJFrame.setVisible(true);
 
    }
}

Wie in unserem JComboBox-Beispiel erzeugen wir zunächst ein Array mit den Strings, die in der JList zur Auswahl stehen sollen. Dieses wird dem Konstruktor beim Erzeugen des JList-Objektes übergeben. 

Sie sehen, dass im Gegensatz zur JComboBox in der JList die Elemente einfach untereinander gelistet werden und eine Auswahl von mehreren Einträgen (durch Gedrückthalten der Strg-Taste) möglich ist.

Da es sich bei den Objekten im Array um Strings handelt, können die Einträge vernünftig dargestellt werden. Wie auch bei der JComboBox kann die JList jedoch nicht mit komplexen Objekten umgehen, da sie keine Informationen darüber hat, was als Eintrag angezeigt werden soll. Auch bei JList ist es daher, wie wir im Unterkapitel ListModel erläutern wollen, erforderlich, dass für solche Fälle ein Datenmodell zugrunde gelegt wird.

Für die JList gibt es drei Auswahlmodi, die durch drei Konstanten im ListSelectionModel repräsentiert werden:

ListSelectionModel.MULTIPLE_INTERVAL_SELECTION Keine Einschränkungen bei der Auswahl. Dieser Modus ist standardmäßig gesetzt (siehe Beispiel).
ListSelectionModel.SINGLE_INTERVAL_SELECTION Es können mehrere Listeneinträge selektiert werden, diese müssen jedoch zusammenhängend sein.
ListSelectionModel.SINGLE_SELECTION Es kann nur ein Listeneintrag ausgewählt werden.

Die Klasse JList besitzt neben den geerbten Methoden von JComponent eine Reihe eigener Methoden, die wir zum Teil hier kurz skizzieren möchten:

Methode Beschreibung
void addListSelectionListener(ListSelectionListener listener) Diese Methode fügt der JList einen ListSelectionListener hinzu, der auf Ereignisse reagiert, wenn Listeneinträge selektiert bzw. deselektiert werden.
void clearSelection() Mit dieser Methode kann man eine Auswahl der Listeneinträge wieder aufheben.
void ensureIndexIsVisible(int index) Diese Methode stellt sicher, dass das Element mit dem angegebenen Index sichtbar ist. Sollte der Index nicht sichtbar sein, so wird zu diesem Eintrag automatisch gescrollt.
ListCellRenderer getCellRenderer() Hier wird ein ListCellRenderer zurückgegeben. Dieser beschreibt, wie die Objekte angezeigt werden sollen.
boolean getDragEnabled() Mit dieser Methode kann überprüft werden, ob bei der JList "Drag and Drop" aktiviert ist.
JList.DropLocation getDropLocation() Diese Methode liefert die DropLocation zurück, welche während eines "Drag and Drop"-Vorganges angezeigt wird. Das ist der Ort, an dem Objekte "fallengelassen" werden können.
int getFirstVisibleIndex( Hier wird der Index des ersten sichtbaren Listeneintrags zurückgegeben.
int getFixedCellHeight() Diese Methode liefert die festgesetzte Zellenhöhe zurück.
int getFixedCellWidth() Diese Methode liefert die festgesetzte Zellenbreite zurück.
int getLastVisibleIndex() Hier wird der Index des letzten sichtbaren Eintrags in der Liste zurückgegeben.
ListSelectionListener[] getListSelectionListeners() Mit dieser Methode werden alle ListSelectionListener zurückgegeben.
int getMaxSelectionIndex() Diese Methode liefert den größten Index der ausgewählten Einträge zurück.
int getMinSelectionIndex() Diese Methode liefert den kleinsten Index der ausgewählten Einträge zurück.
ListModel getModel() Gibt das Datenmodell der JList zurück.
int getSelectedIndex() Hier wird der kleinste Index der Auswahl zurückgegeben bzw. - bei Einfachauswahl - den Index des ausgewählten Eintrages.
int[] getSelectedIndices() Hier werden alle selektierten Indizes zurückgegeben.
Object getSelectedValue() Diese Methode liefert das Objekt mit dem kleinsten Index zurück bzw. - bei Einfachauswahl - das ausgewählte Objekt.
Object[] getSelectedValues() Diese Methode liefert alle selektierten Objekte zurück.
Color getSelectionBackground() Hier wird die Hintergrundfarbe für die Auswahl zurückgegeben.
Color getSelectionForeground() Hier wird die Textfarbe für die Auswahl zurückgegeben.
int getSelectionMode() Diese Methode liefert den Auswahl-Modus als int-Wert der jeweiligen Konstanten des ListSelectionModels (z.B. ListSelectionModel.SINGLE_SELECTION) zurück.
int getVisibleRowCount() Diese Methode liefert die Anzahl der sichtbaren Reihen zurück.
boolean isSelectionEmpty() Hier wird überprüft, ob die Auswahl leer ist. Wenn nichts ausgewählt ist, gibt die Methode true zurück.
boolean isSelectedIndex(int index) Hier wird der übergebene Index mit dem selektierten auf Übereinstimmung verglichen.
void removeListSelectionListener(ListSelectionListener listener) Diese Methode entfernt den übergebenen ListSelectionListener.
void setCellRenderer(ListCellRenderer cellRenderer) Mit dieser Methode kann man einen ListCellRenderer setzen. Dieser beschreibt, wie die Objekte angezeigt werden sollen.
void setDragEnabled(boolean b) Über diese Methode kann man die "Drag and Drop"-Funktionalität ein- (true) bzw. ausschalten (false).
void setFixedCellHeight(int height) Hier kann man eine feste Zellenhöhe festlegen.
void setFixedCellWidth(int width) Hier kann man eine feste Zellenbreite festlegen.
void setListData(Object[] listData) Über diese Methode wird die Liste mit den Elementen eines Arrays gefüllt.
void setListData(Vector listData) Über diese Methode wird die Liste mit den Elementen eines Vectors gefüllt.
void setModel(ListModel model) Mit dieser Methode setzt man ein ListModel für die JList. Dieses beschreibt, welche Daten in der Liste angezeigt werden.
void setSelectedIndex(int index) Der Eintrag mit dem angegebenen Index wird selektiert.
void setSelectedIndices(int[] indices) Die Einträge mit dem in dem Vektor enthaltenen Indizes werden selektiert.
void setSelectedValue(Object anObject, boolean shouldScroll) Das übergebene Objekt wird selektiert. Mit dem zweiten Parameter wird bestimmt, ob zu dem jeweiligen Eintrag gescrollt werden soll (true) oder nicht (false).
void setSelectionBackground(Color selectionBackground) Hier wird die Hintergrundfarbe für den Auswahlbereich gesetzt.
void setSelectionForeground(Color selectionForeground) Hier wird die Textfarbe für den Auswahlbereich gesetzt.
void setSelectionMode(int selectionMode) Diese Methode setzt den Auswahl-Modus. Dazu werden die dafür vorgesehenen Konstanten von ListSelectionModel verwendet.
void setVisibleRowCount(int visibleRowCount) Mit dieser Methode kann man die Anzahl der sichtbaren Zeilen festlegen.


Unterthemen: