Weitere aktuelle Java-Titel finden Sie bei dpunkt.
 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index


8.6.3

JList



Abbildung 8.35: JList
Abbildung 8.35

Eine JList zeigt mehrere Zeilen mit Daten gleichzeitig an, wobei kein, ein oder mehrere Elemente selektiert sein können. Ansonsten verhält sich eine JList identisch wie eine JComboBox. Diese Ähnlichkeit kennt man beispielsweise auch von HTML: Das select-Tag ist eine JComboBox, wenn nur ein Element angezeigt wird (size="1"). Wenn mehr Elemente angezeigt werden (size >=2), wird eine Liste gezeigt, die auch Mehrfachselektion zulässt.

Der Selektionsmodus wird mittels setSelectionMode(int mode) gesetzt. Mögliche Werte dabei sind

Seit der Version [1.4]1.4 besitzt eine JList die Möglichkeit, die Daten nicht nur vertikal untereinander anzuzeigen, sondern zusätzlich in mehreren Spalten. Dafür ist die Methode setLayoutOrientation(int orientation) zuständig. Folgende Werte sind dafür zulässig:

Möchte man auf einen Doppelklick auf ein Element reagieren, beispielsweise um dieses Element auszuwählen, muss man einen MouseListener registrieren:

  list.addMouseListener(new MouseAdapter() {
     public void mouseClicked(MouseEvent e) {
        if (e.getClickCount() == 2)
           System.out.println("Index "+
               ((JList) e.getSource()).
               locationToIndex(e.getPoint())+
               " wurde ausgewählt");
     }
  });

Models

DatenmodellIn der JList kann eine Implementierung des Interface ListModel mittels setModel(ListModel model) gesetzt werden. Dieses Model beinhaltet im Gegensatz zur JComboBox keine Informationen darüber, welche Elemente selektiert sind.
Selection ModelAufgrund der Komplexität der Selektionsmöglichkeiten gibt es bei der JList im Gegensatz zur JComboBox ein zusätzliches Model für die Selektion. Typischerweise benötigt der Programmierer dort keine Erweiterungen, so dass eine set-Methode für das Model fehlt. Wer es dennoch setzen möchte, muss die Methode createSelectionModel() in der JList überschreiben.

Renderer

Der Renderer ist wie bei der JComboBox eine Implementierung des Interface ListCellRenderer und kann mit der Methode setRenderer(ListCellRenderer renderer) gesetzt werden.

Beispiel

  JList list = new JList(new Object[] { 
    new ImageIcon("apfel.gif"), 
    new ImageIcon("kuerbis.gif"), 
    new ImageIcon("paprika.gif"),
    new ImageIcon("tomate.gif") });
  list.setVisibleRowCount(3);
  getContentPane ().add(new JScrollPane(list));
  list = new JList (new Object[] { 
        "Apfel", "Kürbis", "Paprika", "Tomate" });
  list.setVisibleRowCount(3);
  getContentPane().add(new JScrollPane(list));


 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index

Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.