RFR: 8234071: JTable.AUTO_RESIZE_LAST_COLUMN acts like AUTO_RESIZE_ALL_COLUMNS [v2]
Prasanta Sadhukhan
psadhukhan at openjdk.org
Mon Jul 15 09:21:24 UTC 2024
On Mon, 15 Jul 2024 09:18:08 GMT, Prasanta Sadhukhan <psadhukhan at openjdk.org> wrote:
>> When a JTable is resized with` JTable.setAutoResizeMode` set to ` AUTO_RESIZE_LAST_COLUMN` then it behaves exactly as if I specified `AUTO_RESIZE_ALL_COLUMNS`.
>> This is because when `JTable.doLayout` tries to resize the columns, it checks which column to resize by calling `getResizingColumn `and in absence of any column info, it resizes all, so during `setAutoResizeMode` the resizing column needs to be set, which is being done for AUTO_RESIZE_LAST_COLUMN in this fix.
>> No regression test is provided as it can be easily checked with SwingSet2->JTable(demo)->Autoresize mode (set to "Last Column")
>
> Prasanta Sadhukhan has updated the pull request incrementally with one additional commit since the last revision:
>
> Prevent AIOBE
src/java.desktop/share/classes/javax/swing/JTable.java line 1273:
> 1271: tableHeader.setResizingColumn(
> 1272: columnModel.getColumn(columnModel.getColumnCount() - 1));
> 1273: }
Check added to guard against the possibility of `DefaultTableColumnModel.getColumn` which according to spec can throw AIOBE
` if columnIndex is out of range: (columnIndex < 0 || columnIndex >= getColumnCount())`
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/20107#discussion_r1677533997
More information about the client-libs-dev
mailing list