On Mon, 1 Dec 2025 07:41:10 GMT, Prasanta Sadhukhan <[email protected]> 
wrote:

>> 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..
>
> Prasanta Sadhukhan has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   Rethrow Exception

src/java.desktop/share/classes/javax/swing/table/DefaultTableCellRenderer.java 
line 381:

> 379:     /**
> 380:      * See readObject() and writeObject() in JComponent for more
> 381:      * information about serialization in Swing.

Is there some useful information in the JComponent about why we implemented 
writeObject this way? I guess this implementation mimics what we have in 
‎DefaultTableCellRenderer.updateUI().

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/28549#discussion_r2582847725

Reply via email to