<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