RFR: 4337898: Serializing DefaultTableCellRenderer changes colors
Prasanta Sadhukhan
psadhukhan at openjdk.org
Fri Nov 28 06:38:30 UTC 2025
When a `JTable `using any objects of type `DefaultTableCellRenderer`, or subclasses, is serialized,
the colors used to render cells in the JTable subsequent to the call to `writeObject()`
are forced to the default colors for `DefaultTableCellRenderer`'s immediate base class, JLabel, causing the colors
defined in the JTable (typically black on white) to be ignored.
The problem seems to stem from a call to
`installUI `in the `writeObject()` method of `JLabel`, `DefaultTableCellRenderer`'s base class.
This causes the `setForeground` and `setBackground` methods to be invoked with specific colors, which turn out to be JLabel's defaults.
Invoking these methods subsequently with parameters of null restores normal operation same as is explicitly done in `DefaultTableCellRenderer.updateUI()`
https://github.com/openjdk/jdk/blob/195b36f90b789b64f4a0fc867c620935d609a455/src/java.desktop/share/classes/javax/swing/table/DefaultTableCellRenderer.java#L159-L162
CI run is ok..
-------------
Commit messages:
- jcheck
- 4337898: Serializing DefaultTableCellRenderer changes colors
- 4337898: Serializing DefaultTableCellRenderer changes colors
Changes: https://git.openjdk.org/jdk/pull/28549/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=28549&range=00
Issue: https://bugs.openjdk.org/browse/JDK-4337898
Stats: 102 lines in 2 files changed: 101 ins; 0 del; 1 mod
Patch: https://git.openjdk.org/jdk/pull/28549.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/28549/head:pull/28549
PR: https://git.openjdk.org/jdk/pull/28549
More information about the client-libs-dev
mailing list