<Swing Dev> [10] RFR: 8182577: Crash when Tab key moves focus to a JCheckbox with a custom ButtonModel
Luke
ldubox-coding101 at yahoo.co.uk
Wed Jun 28 15:06:58 UTC 2017
Hi,
A second apology is needed: I had sent this from the wrong email
account, so it got blocked for moderation. By the time I'd realised that
wasn't normal / something was wrong, it was past the 3-day limit to
cancel it. The discussion had progressed by then, and I'd more or less
convinced myself the current fix & javadoc is good.
So feel free to ignore my email.
Kind regards,
Luke
On 23/06/2017 12:07, Luke Usherwood wrote:
>
> Hi,
>
> Sorry for the late reply - I've been travelling. As the bug reporter,
> would you mind if I gave a few passing thoughts?
>
> On 6/20/2017 11:16 PM, Semyon Sadetsky wrote:
> > Hi Prasanta,
> >
> >So, it is better check whether the model is a DefaultButtonModel and
> skip if grouping is not supported. Or, perhaps, it is reasonable to
> pull up the > getGroup() into the ButtonModel interface which already
> has setGroup().
>
> On one hand, it seems the best default methods are the ones able to
> produce correct behaviours w.r.t. the other interface methods when
> retrofitted, to avoid any 'surprises'. For example if some other code
> decides to switch from DefaultButtonModel to accept any ButtonModel -
> that would happily compile but it might be easy to miss the changed
> semantics: that calling getGroup may not necessarily give back a value
> passed in to setGroup any more, and hence there's scope for a subtle
> runtime crash bug to be introduced.
>
> Also, would the change that pulls up a new default method into
> ButtonModel be permitted if this fix were back-ported to JDK-9?
>
> On the other hand I suppose there's no other choice if you want to
> patch this oversight in the interface design (which looks like it was
> wanted since Java 1.3!) ... so this is the trade-off you've taken. The
> likelihood of an actual crash in practice is low, and more so because
> most calling code would test for a null value anyway. So I guess on
> balance this may be reasonable.
>
> If you do proceed with default method solution...
>
> 1) should the javadoc for state that all implementers are expected to
> override the default implementation of getGroup(), and callers should
> always test for a null value (even when that might not be expected) to
> account for legacy implementations where the method might not be
> implemented?
>
> 2) will you change similar code in the JDK - such as found in
> JToggleButton.getGroupSelection() - to avoid the check-and-cast to
> DefaultButtonModel. This would seem required to ensure that all
> ButtonModels implementing getGroup() are treated consistently to other
> DefaultButtonModel instances.
>
> Kind regards,
> Luke
>
>
>
>
>
>
>
More information about the swing-dev
mailing list