ToggleGroup explicit management
Richard Bair
richard.bair at oracle.com
Tue Apr 9 12:14:31 PDT 2013
Sounds like a bug alright. Do you see anything in the unit tests that might cover this?
Richard
On Apr 9, 2013, at 12:11 PM, Mark Fortner <phidias51 at gmail.com> wrote:
> 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