RFR: 6292135: DefaultTableModel.setColumnIdentifiers() Clears JTable Row Heights

Tejesh R tr at openjdk.org
Fri Dec 12 05:41:54 UTC 2025


On Thu, 27 Nov 2025 09:53:21 GMT, Prasanta Sadhukhan <psadhukhan at openjdk.org> wrote:

> Calling `DefaultTableModel.setColumnIdentifiers()` resizes the row height of the table to default row height (16) even if the row height is changed to something other than the default using `JTable.setRowHeight(row, height).` 
> The spec of `DefaultTableModel.setColumnIdentifiers()` https://docs.oracle.com/en/java/javase/24/docs/api/java.desktop/javax/swing/table/DefaultTableModel.html#setColumnIdentifiers(java.lang.Object[]) says that it
> `replaces the column identifiers in the model`, that is, the header field of the column is changed to the passed identifier and nowhere it is mentioned that row height would be changed.
> 
> The issue happens because calling `DefaultTableModel.setColumnIdentifiers()` results in the firing of a `TableModelEvent` with HEADER_ROW event and JTable resets the `rowModel` for it irrespective of what the event is.
> Fix is to not reset the `rowModel` to keep the set rowHeight intact for HEADER_ROW event
> 
> No other issue observed with CI with this fix..

test/jdk/javax/swing/JTable/TestRowHeightWithColIdentifier.java line 29:

> 27:  * @summary Verifies DefaultTableModel.setColumnIdentifiers() doesn't
> 28:  *          clear JTable Row Heights
> 29:  * @run main TestRowHeightWithColIdentifier

This test can be headless.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/28529#discussion_r2612990682


More information about the client-libs-dev mailing list