[jdk25u] Integrated: 8359428: Test 'javax/swing/JTabbedPane/bug4499556.java' failed because after selecting one of L&F items, the test case automatically failed when clicking on L&F Menu button again

Srinivas Mandalika smandalika at openjdk.org
Wed Aug 6 09:21:18 UTC 2025


On Tue, 29 Jul 2025 08:50:39 GMT, Srinivas Mandalika <smandalika at openjdk.org> wrote:

> **PR Changes**
> It is seen that this test (which was opensourced in [JDK-8353304](https://bugs.openjdk.org/browse/JDK-8353304)) when run with NimbusLookAndFeel, after selecting one of L&F items, the test case automatically failed when clicking on L&F Menu button again.
> It is because while switching to another L&F say platform(WindowsL&F) from Metal/Nimbus LookAndFeel, if testcase was originally run in Nimbus L&F, SynthMenuItemLayoutHelper() calls MenuItemLayoutHelper.reset where style.getFont(context) return null font so when it calls getFontMetrics(font) it calls font.hashCode which fails with
> 
> Execution failed: `main' threw exception: java.lang.NullPointerException: Cannot invoke "java.awt.Font.hashCode()" because "font" is null
> 
> This is happening because the test calls SwingUtilities.updateComponentTreeUI on tabbedpane.
> So, when L&F is changed inside the test via "L&F Menu" option 1st time say Metal to Platform, it changes the L&F of the tabbed pane to Windows L&F, but not for the "L&F Menu" font itself which is still in Nimbus L&F, but style context is reset so when next time "L&F Menu" is clicked to change the L&F, SynthMenuItemLayoutHelper gets null font from invalid context and then it crashes.
> Fix is to ensure the updateComponentTreeUI should be for entire frame which consists of "L&F Menu" and the tabs so L&F is changed consistently for all nodes.
> 
> **Testing**
> 
>  [JTREG Testing] (1 manual test )
> 
> runner starting test: javax/swing/JTabbedPane/bug4499556.java
> 
> runner finished test: javax/swing/JTabbedPane/bug4499556.java
> 
> Passed. Execution successful
> 
> Test results: passed: 1
> 
> **Conflicts**
> [MR clean check] (A Clean Backport) -Yes
> 
> [Are higher backports completed(25u,21u,17u,11u,8u etc) ?]
> Applicable to 25u via this MR and the others are being worked upon.
> 
>  [Does it contain multiple changesets ?] - No

This pull request has now been integrated.

Changeset: 3db9097a
Author:    Srinivas Mandalika <smandalika at openjdk.org>
Committer: Aleksey Shipilev <shade at openjdk.org>
URL:       https://git.openjdk.org/jdk25u/commit/3db9097a9f001954f981b4ff095c79d187f0dae1
Stats:     3 lines in 1 file changed: 1 ins; 0 del; 2 mod

8359428: Test 'javax/swing/JTabbedPane/bug4499556.java' failed because after selecting one of L&F items, the test case automatically failed when clicking on L&F Menu button again

Backport-of: 2b94b70ef50675f7853c0cb6a61e60e6eb7d92ed

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

PR: https://git.openjdk.org/jdk25u/pull/50


More information about the jdk-updates-dev mailing list