ToggleGroup explicit management

Mark Fortner phidias51 at gmail.com
Tue Apr 9 12:11:05 PDT 2013


Hmm.  Looks like they broke the paradigm they were using.  Definitely
sounds like a JIRA issue.

Mark



On Tue, Apr 9, 2013 at 11:57 AM, Scott Palmer <swpalmer at gmail.com> wrote:

> Nope.  You can't add a RadioMenuItem to a ToggleGroup at all that way.  It
> seems you have to set the ToggleGroup on the RadioMenuItem.
>
> I.e. this always fails:
>
>
>         ToggleGroup toggleGroup = new ToggleGroup();
>         RadioMenuItem rmi = new RadioMenuItem("One");
>         toggleGroup.getToggles().add(rmi);
>
> but this works:
>
>         ToggleGroup toggleGroup = new ToggleGroup();
>         RadioMenuItem rmi = new RadioMenuItem("One");
>         rmi.setToggleGroup(toggleGroup);
>
>
> Scott
>
>
>
> On Tue, Apr 9, 2013 at 1:53 PM, Mark Fortner <phidias51 at gmail.com> wrote:
>
>> I assume that if you add them one at a time, you don't have any problems,
>> right?  If not, that would lead me to suspect that it's having problems
>> descriminating between instances of the RadioMenuItem -- perhaps hashcode
>> is improperly overridden.  I use ToggleGroups with ToggleButtons all the
>> time without any problems.
>>
>> Cheers,
>>
>> Mark
>>
>>
>>
>> On Tue, Apr 9, 2013 at 10:47 AM, Scott Palmer <swpalmer at gmail.com> wrote:
>>
>>> No. (resend to include the list)
>>>
>>>
>>> On Tue, Apr 9, 2013 at 1:43 PM, Mark Fortner <phidias51 at gmail.com>wrote:
>>>
>>>> Does it work if you do this?
>>>>
>>>> toggleGroup.getToggles().addAll(new RadioMenuItem("One"), new
>>>> RadioMenuItem("Two")...);
>>>>
>>>> Cheers,
>>>>
>>>> Mark
>>>>
>>>>
>>>>
>>>> On Tue, Apr 9, 2013 at 10:29 AM, Scott Palmer <swpalmer at gmail.com>wrote:
>>>>
>>>>>  The docs for ToggleGroup say:
>>>>> "Generally ToggleGroups are managed automatically simply by specifying
>>>>> the
>>>>> name of a ToggleGroup on the
>>>>> Toggle<
>>>>> http://docs.oracle.com/javafx/2/api/javafx/scene/control/Toggle.html>,
>>>>>
>>>>> but in some situations it is desirable to explicitly manage which
>>>>> ToggleGroup is used by
>>>>> Toggles<
>>>>> http://docs.oracle.com/javafx/2/api/javafx/scene/control/Toggle.html>
>>>>>
>>>>> ."
>>>>>
>>>>> Well, I tried to "explicitly manage" them, but I get :
>>>>> ...
>>>>> Caused by: java.lang.IllegalArgumentException: Duplicate toggles are
>>>>> not
>>>>> allow in a ToggleGroup.
>>>>>     at
>>>>>
>>>>> javafx.scene.control.ToggleGroup$1.onProposedChange(ToggleGroup.java:63)
>>>>>     at
>>>>>
>>>>> com.sun.javafx.collections.VetoableObservableList.add(VetoableObservableList.java:165)
>>>>>     at
>>>>>
>>>>> com.sun.javafx.collections.ObservableListWrapper.add(ObservableListWrapper.java:144)
>>>>>     at
>>>>>
>>>>> javafx.scene.control.RadioMenuItem$1.invalidated(RadioMenuItem.java:151)
>>>>>     at
>>>>>
>>>>> javafx.beans.property.ObjectPropertyBase.markInvalid(ObjectPropertyBase.java:129)
>>>>>     at
>>>>>
>>>>> javafx.beans.property.ObjectPropertyBase.set(ObjectPropertyBase.java:163)
>>>>>     at
>>>>>
>>>>> javafx.scene.control.RadioMenuItem.setToggleGroup(RadioMenuItem.java:134)
>>>>>     at
>>>>> javafx.scene.control.ToggleGroup$1.onChanged(ToggleGroup.java:87)
>>>>>     at
>>>>>
>>>>> com.sun.javafx.collections.VetoableObservableList.callObservers(VetoableObservableList.java:83)
>>>>>     at
>>>>>
>>>>> com.sun.javafx.collections.ObservableListWrapper.addAll(ObservableListWrapper.java:171)
>>>>>     at
>>>>>
>>>>> com.sun.javafx.collections.VetoableObservableList.addAll(VetoableObservableList.java:108)
>>>>>     at
>>>>>
>>>>> com.sun.javafx.collections.ObservableListWrapper.addAll(ObservableListWrapper.java:160)
>>>>>     at
>>>>>
>>>>> com.sun.javafx.collections.ObservableListWrapper.addAll(ObservableListWrapper.java:309)
>>>>>     at toggletest.ToggleTest.start(ToggleTest.java:34)
>>>>>     ...
>>>>>
>>>>> This is just by doing:
>>>>>
>>>>>         ToggleGroup toggleGroup = new ToggleGroup();
>>>>>         RadioMenuItem [] radioButtons = new RadioMenuItem[] {
>>>>>             new RadioMenuItem("One"),
>>>>>             new RadioMenuItem("Two"),
>>>>>             new RadioMenuItem("Three")
>>>>>         };
>>>>>
>>>>>         toggleGroup.getToggles().addAll(radioButtons);
>>>>>
>>>>>
>>>>> Bug?
>>>>>
>>>>> Scott
>>>>>
>>>>
>>>>
>>>
>>
>


More information about the openjfx-dev mailing list