# JRadioButton deaktivieren?



## Guest (27. Okt 2005)

Hallo,

ich habe eine ButtonGroup mit JRadioButtons, in der dann auch nur immer einer aktiv sein kann. Am Anfang ist kein Button aktiv, könnte man aber mit rbutton1.setSelected( true ); setzen - soll aber nicht. Bis hierhin ist alles ok.
Ich hab dann noch einen einzelnen Reset-Button mit dem ich alle JRadioButtons in der Group wieder deaktivieren will. Im actionPerform will ich dann beim anklicken des Reset-Button deaktivieren, das geht aber nicht, jedenfalls nicht mit rbutton1.setSelected( false );  ???


----------



## Guest (27. Okt 2005)

Wie wäre es damit.
Einen zusätzlichen, versteckten RadioButton einfügen und diesen selektieren?


----------



## Gast (27. Okt 2005)

Hab ich auch schon dran gedacht, aber geht das echt nur so?


----------



## Sky (27. Okt 2005)

funktioniert "setSelected(false)" denn wenn deine Buttons nicht in einer ButtonGroup sind ?


----------



## Guest (27. Okt 2005)

Ausschnitt aus der API-Doku zu ButtonGroup.





> Initially, all buttons in the group are unselected. *Once any button is selected*, one button is always selected in the group. *There is no way to turn a button programmatically to "off", in order to clear the button group.* To give the appearance of "none selected", *add an invisible radio button to the group* and then programmatically select that button *to turn off all the displayed radio buttons*. For example, a normal button with the label "none" could be wired to select the invisible radio button.


80% der Fragen dieser Art sind in der API-Dokumentation beschrieben. Liest das überhaupt jemand?  :autsch:


----------



## Sky (27. Okt 2005)

Nachtrag: Ich habe mir mal den Code von ButtonGroup#setSelected angesehen:

```
public void setSelected(ButtonModel m, boolean b) {
        if (b && m != null && m != selection) {
            ButtonModel oldSelection = selection;
            selection = m;
            if (oldSelection != null) {
                oldSelection.setSelected(false);
            }
            m.setSelected(true);
        } 
    }
```

Und siehe da: Der Code wird nur für b == true ausgeführt. Ich weiß noch nicht, ob das ein Bug oder ein Feature ist!?

Workaround: JRadioButton aus der ButtonGroup nehmen, deselektieren und wieder in die ButtonGroup einfügen.

<Edit>Ok, in der API ist ein anderer Workaround beschrieben.</Edit>


----------



## MPW (31. Okt 2005)

Sky hat gesagt.:
			
		

> aus der ButtonGroup nehmen, deselektieren und wieder in die ButtonGroup einfügen.



So mach' ich das auch immer.

Ich glaube nicht, dass das ein Bug, sondern ein Feature ist, damit kann man nämlich feststellen, ob das Ding schonmal in Gebrauch war.


----------

