RFR: 7169951: SwingSet2 throws NullPointerException with Nimbus L&F

Sergey Bylokhov serb at openjdk.org
Fri Jan 13 08:25:11 UTC 2023


On Fri, 13 Jan 2023 04:25:59 GMT, Prasanta Sadhukhan <psadhukhan at openjdk.org> wrote:

> It is observed that if SwingSet2 is run in Nimbus L&F and
> we drag the icon tool bar (which is floatable) out of the GUI Window
> and  Once the tool bar is detached, click on "Look & Feel" menu option to change to any L&F (say Java L&F)
> it causes NPE due to font being null when getFontMetrics() is called
> 
> In other L&F, it uses the tabPane's [font ](https://github.com/openjdk/jdk/blob/master/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicTabbedPaneUI.java#L2177) whereas in Nimbus font is obtained from getStyle().getFont() which returns null when toolbar is detached from the main window.
> The proposed fix is to get tabPane's font if the font passed is null alike other L&Fs. 
> 
> No regression test is made as it can be verified with SwingSet2..

It is unclear does the "getStyle().getFont()" always returns null for that component but we call it only for "floatable" toolbar. Or "getStyle().getFont()" starts to return null for the "floatable" toolbar. If it starts to return null then why does this happen? Are we sure that the "getStyle().getFont()" and "tabPane.getFont()" always returns the same font?

-------------

PR: https://git.openjdk.org/jdk/pull/11984



More information about the client-libs-dev mailing list