On Mon, 25 Sep 2023 07:00:38 GMT, Prasanta Sadhukhan <psadhuk...@openjdk.org> 
wrote:

>> After the first time a JTableHeader is serialized, it no longer will 
>> uninstall its UI upon subsequent serializations.
>> This happens for classes that use the BasicTableHeaderUI class. Any LAF that 
>> extends the BasicTableHeaderUI like SynthTableHeaderUI and 
>> WindowsTableHeaderUI will get an NotSerializableException thrown
>> 
>> Each time an JComponent instance is Serialized, a [counter 
>> ](https://github.com/openjdk/jdk/blob/218829e0a2a3ae5599b81733df53557966392033/src/java.desktop/share/classes/javax/swing/JComponent.java#L5644-L5645)
>>  for the instance is incremented. It is de-incremented in JComponent's 
>> writeObject or a class that implements it the same way, like JButton, 
>> JScrollPane etc..
>> With JTableHeader it does not deincrement the counter. The uninstall 
>> mechanism will not uninstall a UI if the counter is not 0 on the first 
>> pass..It is not possible to call JComponent.setWriteObjectCounter in 
>> JTableHeader as it is not in the same package so the fix is to remove the 
>> writeObject implementation and rely on JComponent writeObject implementation 
>> to make sure uninstallation of UI happens and also NotSerializableException 
>> does not happen for Synth
>
> Prasanta Sadhukhan has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   tag headful added

Marked as reviewed by aivanov (Reviewer).

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

PR Review: https://git.openjdk.org/jdk/pull/15507#pullrequestreview-1641859251

Reply via email to