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