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
