<Swing Dev> [12] RFR JDK-8192888: AllSwingComponentsBaselineTest fails with NullPointerException for NimbusLookAndFeel
Prasanta Sadhukhan
prasanta.sadhukhan at oracle.com
Wed Sep 12 05:03:02 UTC 2018
Hi Sergey,
On 12-Sep-18 2:39 AM, Sergey Bylokhov wrote:
> Hi, Prasanta.
> On 07/09/2018 03:57, Prasanta Sadhukhan wrote:
>> Please review a fix for an issue where obtaining baseline for Button
>> UI in Nimbus L&F results in NPE.
>> Reason for it is when SynthPanelUI#installDefaults is called during
>> frame instantiation, it calls SynthPanelUI#updateStyle which sets the
>> context AND then the style
>> /private void updateStyle(JPanel c) {//
>> // SynthContext context = getContext(c, ENABLED);//
>> // style = SynthLookAndFeel.updateStyle(context, this);//
>> // }/ > Now, SynthContext.getContext is called with style "null"
>> as style is
>> updated after calling getContext.
>> So, when getBaseline is called and it tries to invoke
>> context.getStyle().getGraphicsUtils() it causes NPE.
>
> Why SynthLookAndFeel.updateStyle() which is called in
> SynthButtonUI.updateStyle(AbstractButton b) did not update the context
> which is passed to it? Is it possible that
> SynthButtonUI.installDefaults() was not called before getBaseline()?
>
SynthButtonUI.updateStyle() called from SynthButtonUI.installDefaults()
creates a new context whereas in getBaseline() we again calls
getContext() in l207 which creates a new SynthContext, so the style was
not updated to the context currently being queried in getBaseline()
Regards
Prasanta
More information about the swing-dev
mailing list