On Fri, 20 Jun 2025 03:09:32 GMT, Prasanta Sadhukhan <psadhuk...@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.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/25907#discussion_r2184710678

Reply via email to