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

Reply via email to