On Wed, 24 Mar 2021 06:17:04 GMT, Tejpal Rebari <[email protected]> wrote:
> Hi All,
> Please review the following fix for jdk17.
>
> Issue : LookAndFeel.installProperty(list, "opaque", false) is not able to set
> the opaque property for JList and JTable.
> LookAndFeel.installProperty calls the setUIProperty, and setUIProperty checks
> for OPAQUE_SET to change the opaque property as requested by the client.
> OPAQUE_SET is always set to true when there is call to setOpaque(boolean).So
> when the constructor calls setOpaque(true) OPAQUE_SET is set to true and wont
> allow the setUIProperty to change the opaque property.
> installProperty should work as the opaque property is not set by the client.
>
> Fix. Fix is to remove the call to the setOpaque() from the constructor of
> JList and JTable. This will allow the client to change the opaque property
> calling LookAndFeel.installProperty() when the property is already not set.
>
> Test : Added a test to check the same. Also tested internal tests which all
> are passing.
> Link is in JBS.
test/jdk/javax/swing/JList/TestOpaqueListTable.java line 38:
> 36:
> 37: public static void main(String[] args) throws Exception {
> 38: UIManager.LookAndFeelInfo[] installedLookAndFeels;
I did not look close to the fix, but you need to check that the default value
of the "opaque" property will not be changed. So all default L&F will set it to
true, as before the fix.
-------------
PR: https://git.openjdk.java.net/jdk/pull/3167