Titel   Inhalt   Suchen   Index   DOC  Handbuch der Java-Programmierung, 3. Auflage
 <<    <     >    >>   API  Kapitel 32 - AWT-Dialogelemente

32.8 Choice



Ein Choice-Menü ist ein aufklappbares Textfeld, dessen Inhalt aus einer vom Programm vorgegebenen Liste ausgewählt werden kann. Dialogelemente des Typs Choice entsprechen den unter Windows üblichen Drop-Down-Listboxen, einer eingeschränkten Form der Comboboxen, bei denen das zugehörige Editfeld nicht separat geändert werden kann.

public Choice()
java.awt.Choice

Der parameterlose Konstruktor erstellt ein Choice-Objekt mit einer leeren Liste.

Eine der wichtigsten Methoden der Klasse Choice ist add:

public void add(String item)
java.awt.Choice

Jeder Aufruf von add hängt das übergebene Element item an das Ende der Liste an. Die Elemente werden dabei in der Reihenfolge der Aufrufe von add eingefügt. Eine automatische Sortierung wurde in Java nicht vorgesehen.

Analog zur Methode add gibt es eine bedeutungsgleiche Methode addItem. Während in der Klasse Choice beide Methoden verwendet werden können, wurde die Methode addItem in der Klasse List mit dem JDK 1.2 als deprecated markiert, sollte also nicht mehr verwendet werden.

 JDK1.1-1.4 

Für den Zugriff auf die Elemente der Combobox stehen die Methoden getItemCount, getSelectedIndex, getItem und getSelectedItem zur Verfügung:

public int getSelectedIndex()

public String getItem(int n)

public String getSelectedItem()

public int getItemCount()
java.awt.Choice

getItemCount liefert die Anzahl der Elemente, die sich gegenwärtig in der Liste befinden. Mit getItem kann auf das n-te Element der Liste über seinen Index zugegriffen werden; die Zählung beginnt bei 0.

getSelectedIndex liefert den Index des selektierten Elements, so daß durch Übergabe dieses Wertes an getItem das aktuelle Element beschafft werden kann. Alternativ dazu kann getSelectedItem aufgerufen werden, um ohne explizite Kenntnis der internen Nummer das selektierte Element zu beschaffen.

Ebenso wie der Anwender kann auch das Programm selbst ein Element aus der Liste selektieren:

public select(int)
public select(String)
java.awt.Choice

Hierbei wird an select wahlweise ein int oder ein String übergeben. Im ersten Fall wird das Element über seinen numerischen Index selektiert, im zweiten direkt durch Suche des angegebenen Wertes.

Ebenso wie eine Checkbox sendet auch ein Choice-Element Item-Ereignisse, wenn ein Element selektiert wurde. Um auf dieses Event zu reagieren, ist durch Aufruf von addItemListener ein ItemListener zu registrieren:

public void addItemListener(ItemListener l)
java.awt.Choice

Ein Item-Event wird immer dann gesendet, wenn ein anderes Element ausgewählt wurde. In diesem Fall wird im Ereignisempfänger die Methode itemStateChanged mit einem Argument vom Typ ItemEvent aufgerufen:

public abstract void itemStateChanged(ItemEvent e)
java.awt.event.ItemEvent

Das ItemEvent stellt die Methode getItemSelectable zur Verfügung, mit der ermittelt werden kann, durch welches Choice-Element das Ereignis ausgelöst wurde. Zusätzlich gibt es die Methode getItem, die das ausgewählte Element als String zur Verfügung stellt:

public ItemSelectable getItemSelectable()

public Object getItem()
java.awt.event.ItemEvent

Damit kann offensichtlich auf zwei unterschiedliche Arten auf die Änderung der Auswahl reagiert werden. Einerseits kann mit getItemSelectable ein Choice-Element beschafft und mit getSelectedItem das selektierte Element ermittelt werden. Andererseits kann getItem aufgerufen und das Ergebnis in einen String umgewandelt werden. Das folgende Listing demonstriert dies beispielhaft:

001 /* Choice2.inc */
002 
003 public void itemStateChanged(ItemEvent event)
004 {
005   Choice choice = (Choice) event.getItemSelectable();
006   String str1 = choice.getSelectedItem();
007   String str2 = (String) event.getItem();
008   System.out.println("choice.getSelectedItem: " + str1);
009   System.out.println("event.getItem:          " + str2);
010 }
Choice2.inc
Listing 32.11: Behandlung der Ereignisse einer Choice-Komponente

Das Beispielprogramm zum Testen der Choice-Komponente sieht so aus:

001 /* Choice1.inc */
002 
003 private void customizeLayout(Panel panel)
004 {
005   panel.setLayout(new FlowLayout());
006   Choice choice = new Choice();
007   choice.addItemListener(this);
008   choice.add("rot");
009   choice.add("grün");
010   choice.add("gelb");
011   choice.add("blau");
012   choice.add("rosa");
013   choice.add("lila");
014   panel.add(choice);
015 }
Choice1.inc
Listing 32.12: Verwendung einer Choice-Komponente

Abbildung 32.8: Ein Dialog mit einer Choice-Komponente


 Titel   Inhalt   Suchen   Index   DOC  Handbuch der Java-Programmierung, 3. Auflage, Addison Wesley, Version 3.0.1
 <<    <     >    >>   API  © 1998-2003 Guido Krüger, http://www.javabuch.de