RFR: 8348760: RadioButton is not shown if JRadioButtonMenuItem is rendered with ImageIcon in WindowsLookAndFeel [v6]

Prasanta Sadhukhan psadhukhan at openjdk.org
Thu Feb 6 05:48:12 UTC 2025


On Wed, 5 Feb 2025 02:33:04 GMT, Prasanta Sadhukhan <psadhukhan at openjdk.org> wrote:

>>> I believe this is likely how layout is calculated.
>> 
>> I just wanted to know "why 3 is chosen as a magic number ?". Actually the spacing with "4 * OFFSET" looks better between radio, icon and text of menu item (on win 11).
>
>> > I believe this is likely how layout is calculated.
>> 
>> I just wanted to know "why 3 is chosen as a magic number ?". Actually the spacing with "4 * OFFSET" looks better between radio, icon and text of menu item (on win 11).
> 
> I guess this is now taken care of in latest PR..

> @prsadhuk I tested on win11 and I think this should be OK. Although the gap is not equal between RadioButton icon, imageIcon and text but as you said above `text location as it is done in WindowsMenuItemUI#paintText which does not have any knowledge of bullet/icon presence`, this may not be an issue.
> 
> After changing `icon.paintIcon(c, g, x - OFFSET + ((skinWidth != -1) ? skinWidth : 16), y + OFFSET);` to `icon.paintIcon(c, g, x - OFFSET + ((skinWidth != -1) ? skinWidth - 1 : 15), y + OFFSET);` looks better (my personal opinion)
> 
> Same issue exist for JCheckBoxMenuItem as well, it's better to extend the test for JCheckBoxMenuItem as well. The components can be re-arranged in a grid panel to give better visual alignment (vertically aligned).

It may look better with skinWidth -1 and 16-1 but the icon may overlap with bullet/checkmark skin by 1 pixel in that case, so for better consistency, I have kept it adrift of skinWidth and 16 is because normal icon is of 16x16 size, so in case there is no skin, then also 16 width is maintained

I will work on the testcase to extend for JCheckBoxMenuItem..

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

PR Comment: https://git.openjdk.org/jdk/pull/23324#issuecomment-2638890130


More information about the client-libs-dev mailing list