Tit   Inh   Ind   1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31   32   <<   <   >   >> 

22.5 CheckboxGroup



Eine CheckboxGroup ist die Java-Variante einer Gruppe von Radiobuttons, also einer Kollektion von Buttons, von denen immer genau einer aktiviert ist. Wird ein anderer Button aktiviert, so ändert er seinen internen Status auf true und der zuvor gesetzte wird false.

Eine CheckboxGroup ist nichts anderes als eine Checkbox, deren CheckboxGroup-Parameter gesetzt ist.

public Checkbox(String label, CheckboxGroup cbg, boolean state)

public Checkbox(String label, boolean state, CheckboxGroup cbg)
java.awt.Checkbox

Anders als bei einer gewöhnlichen Checkbox stehen jetzt nur noch zwei Konstruktoren zur Verfügung. An diese werden die Beschriftung, der Anfangszustand und ein Objekt der Klasse CheckboxGroup übergeben.

Die CheckboxGroup sorgt dabei für den Gruppierungseffekt und die Logik beim Umschalten der Radiobuttons. Für jede zusammenhängende Gruppe von Radiobuttons ist daher ein eigenes Objekt der Klasse CheckboxGroup zu instanzieren und an den Konstruktor zu übergeben.

Die CheckboxGroup bietet alle Methoden, die auch bei einer Checkbox verfügbar sind. setState funktioniert allerdings nur dann, wenn als Parameter true übergeben wird. In diesem Fall wird der Zustand der zugehörigen Checkbox gesetzt und der aller anderen Checkboxes derselben Gruppe zurückgenommen. Bei der Übergabe von false an setState passiert gar nichts. Zusätzlich gibt es zwei Methoden getCheckboxGroup und setCheckboxGroup, die den Zugriff auf die zugeordnete CheckboxGroup erlauben:

public void setCheckboxGroup(CheckboxGroup cbg)

public CheckboxGroup getCheckboxGroup()
java.awt.CheckboxGroup

Mit setCheckboxGroup kann die Zuordnung der Checkboxes zu einer CheckboxGroup auch nach der Konstruktion geändert werden. Das beim Aufruf von getCheckboxGroup zurückgegebene Objekt kann dazu verwendet werden, mit Hilfe der Methoden getCurrent und setCurrent der Klasse CheckboxGroup auf das selektierte Element der CheckboxGroup zuzugreifen:

public Checkbox getCurrent()

public void setCurrent(Checkbox box)
java.awt.CheckboxGroup

getCurrent liefert die Checkbox, deren Zustand true ist. Um mit setCurrent eine Checkbox zu aktivieren, muß diese als Parameter übergeben werden. Alle anderen Checkboxes derselben Gruppe bekommen dann den Zustand false.

Die einzelnen Checkboxes einer CheckboxGroup senden ein ITEM-Event, wenn die Checkbox selektiert wird. Dagegen wird kein Ereignis gesendet, wenn die Checkbox deselektiert wird oder wenn ihr Zustand nicht vom Anwender, sondern vom Programm verändert wird.

Das folgende Beispiel zeigt die Definition von zwei Objekten des Typs CheckboxGroup mit jeweils drei Elementen. In jeder der beiden Gruppen ist immer genau ein Element markiert, das unabhängig von den Elementen der anderen Gruppe ausgewählt werden kann:

001 /* CheckboxGroup.inc */
002 
003 private void customizeLayout(Panel panel)
004 {
005    panel.setLayout(new GridLayout(3,2));
006    CheckboxGroup cbg1 = new CheckboxGroup();
007    CheckboxGroup cbg2 = new CheckboxGroup();
008    panel.add(new Checkbox("rot",cbg1,true));
009    panel.add(new Checkbox("eckig",cbg2,true));
010    panel.add(new Checkbox("blau",cbg1,false));
011    panel.add(new Checkbox("rund",cbg2,false));
012    panel.add(new Checkbox("gelb",cbg1,false));
013    panel.add(new Checkbox("schief",cbg2,false));
014 }
CheckboxGroup.inc
Listing 22.5: Verwendung einer CheckboxGroup

 Beispiel 

Abbildung 22.5: Ein Dialog mit CheckboxGroup-Elementen


 Tit   Inh   Ind   1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31   32   <<   <   >   >> 
Go To Java 2, Addison Wesley, Version 1.0.2, © 1999 Guido Krüger, http://www.gkrueger.com