On Fri, 4 Jul 2025 08:20:27 GMT, Abhishek Kumar <abhis...@openjdk.org> wrote:
>> Issue is RadioButtonMenuItem and CheckBoxMenuItem bullet/checkmark icon is >> not displayed in WindowsL&F when the test is run with NimbusL&F. >> This is because `WindowsIconFactory#VistaMenuItemCheckIcon.paintIcon` called >> `getLaFIcon()` which returns a empty NimbusIcon which causes no icons to be >> drawn. This is because the test after setting WIndows L&F of the menuitem >> reverts back the Windows L&F to Nimbus L&F via >> `UIManager.setLookAndFeel(save);` call in the test so when frame is made >> visible, the L&F resets back to Nimbus L&F resulting in null NimbusIcon. >> >> Fix is made to make sure the whole frame is updated to cater to L&F change >> via `SwingUtilities.updateComponentTreeUI(frame);` call and keep the L&F >> without reverting back to original L&F.. > > test/jdk/javax/swing/JMenuItem/RightLeftOrientation.java line 92: > >> 90: JMenuBar menuBar = new JMenuBar(); >> 91: >> 92: menuBar.add(createMenu("javax.swing.plaf.metal.MetalLookAndFeel", > > I tried to extend the test (with this PR changes included) for all installed > L&Fs and then create the menu for each L&F. > > UIManager.LookAndFeelInfo[] lafs = > UIManager.getInstalledLookAndFeels(); > for (final UIManager.LookAndFeelInfo lafInfo : lafs) { > System.out.println("installed laf className : " + > lafInfo.getClassName()); > System.out.println("installed laf Name : " + lafInfo.getName()); > menuBar.add(createMenu(lafInfo.getClassName(), > lafInfo.getName())); > } > > Then the test failed with this exception > > java.lang.NullPointerException: Cannot invoke > "java.awt.Font.hashCode()" because "font" is null > at > java.desktop/sun.font.FontDesignMetrics$MetricsKey.init(FontDesignMetrics.java:213) > at > java.desktop/sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:282) > at > java.desktop/sun.swing.SwingUtilities2.getFontMetrics(SwingUtilities2.java:1235) > > Otherwise the RBMI and CBMI does contain the icon after the fix. This is similar to the exception that I got [above](https://github.com/openjdk/jdk/pull/25907#issuecomment-3001288429). It's just a result of mixing several L&Fs at the same time. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/25907#discussion_r2184908197