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

## 32.5 CheckboxGroup

- 32.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 32.5: Verwendung einer CheckboxGroup

Abbildung 32.5: Ein Dialog mit CheckboxGroup-Elementen

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