<Swing Dev> [11] Review Request: 8205144 JSpinner may change the font after became visible
Sergey Bylokhov
Sergey.Bylokhov at oracle.com
Wed Jun 20 23:07:28 UTC 2018
Hello.
Please review the fix for jdk11.
Bug: https://bugs.openjdk.java.net/browse/JDK-8205144
Webrev: http://cr.openjdk.java.net/~serb/8205144/webrev.00
Our implementation of JSpinner tries to maintain the font which is used
in the text field inside spinner. There are three cases when the font of
the text field should be changed to the font of spinner(if the font of
text field was not set by the user).
- By default when the spinner is created(fixed in JDK-6421058)
- When the user change the font of the spinner(fixed in JDK-5036022)
And there is one more case which should be taken into account. It is
possible that LaF can change the font of text field to the font which is
used by default by all textfields in this LaF. It is possible to
reproduce this using:
==========
/**
* A simple minded look and feel change: ask each node in the tree
* to <code>updateUI()</code> -- that is, to initialize its UI property
* with the current look and feel.
*/
public static void updateComponentTreeUI(Component c)
==========
This method will iterate over hierarchy of the components and call
updateUI() for each components, then its children, and so on. This is a
situation when the bug is reproduced. During updateUI() in JSpinner the
font of internal text field will be set to the font of the spinner, but
later when the updateUI() will be called for the text field itself the
font will be set to default font of of all text fields.
The problem is not reproduced if the application do not change the LaF
on the fly, because in this case we call updateUI() for spinner after
updateUI() for internal text field.
The fix will reject all fonts(UIResource) which were not set by the
user, except the font of the spinner.
--
Best regards, Sergey.
More information about the swing-dev
mailing list