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