On Thu, 6 Aug 2026 03:22:02 GMT, Prasanta Sadhukhan <[email protected]> 
wrote:

>> When JTable.setAutoResizeMode is called with JTable.AUTO_RESIZE_LAST_COLUMN, 
>>  it is supposed to adjust the delta width to the last column only when table 
>> itself changes width
>>  but before JDK-8234071 fix, AUTO_RESIZE_LAST_COLUMN, was behaving exactly 
>> as if user specified AUTO_RESIZE_ALL_COLUMNS
>>  so width of all columns of table gets adjusted. 
>>  
>>  JDK-8234071 fixes this issue by setting "resizingColumn" to last column 
>> when AUTO_RESIZE_LAST_COLUMN is specified so that only last column gets 
>> resized
>>  but the fix was wrongly instructing the JTable that the user is currently 
>> resizing the last column with the mouse
>>  so JTable started believing a header resize was active even during normal 
>> layout, window resizing or cell editing
>>  thus it caused side-effects like initial preferred column widths was 
>> ignored as seen in JDK-8375573
>>  and real mouse resizing of another column was conflicting with the “last 
>> column is resizing” state as mousePressed/Released uses "resizingColumn" to 
>> ensure a certain column is getting resized
>>  and editing is disturbed because JTable thought column resizing/layout 
>> activity is happening as seen in this particular issue.
>> 
>>  The issue is that a left click on an editable cell starts editing and then 
>> selects the cell. 
>>  Selecting the cell scrolls it into view, which revalidates the table and 
>> runs doLayout(). 
>>  Because the header now permanently reports a resizing column, the layout 
>> pass adjusts a column's preferred width 
>>  and fires TableColumnModelListener.columnMarginChanged(). 
>> JTable.columnMarginChanged() stops the active cell editor.
>>  
>>  Also, after a user drags the first column header divider, resizingColumn is 
>> reset to null in `BasicTableHeaderUI.mouseReleased` and
>>  JTable then syncs preferred widths from actual widths using 
>> `setWidthsFromPreferredWidths(true)`. 
>>  Later, when the dialog is resized, `setWidthsFromPreferredWidths(false)` 
>> runs again and all columns are recalculated so AUTO_RESIZE_LAST_COLUMN was 
>> not honoured
>>  
>>  Fix is made to handle AUTO_RESIZE_LAST_COLUMN in the layout code
>>  so the width distribution logic ensures that
>>   During normal window/dialog resize: change is made only to the last column.
>>   During initial layout: honors the user’s preferred widths, then let the 
>> last column absorbs extra space.
>>   During real header drag: allows the dragged column to resize, and uses the 
>> last column to compensate.
>>   and it doesn't hamper editing of any cell in last column when double-c...
>
> Prasanta Sadhukhan has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   Use state check

There seems to be a problem with the fix.  Using the test program 
https://github.com/andy-goryachev-oracle/Test/blob/main/src/goryachev/research/TestAutoResizeLastColumn.java

follow the steps:
- resize the first column slightly
- double click on the last column
- observed: the columns are resized wildly.  expected: columns should not get 
resized.

screenshots:

initial state:
<img width="612" height="412" alt="Screenshot 2026-08-06 at 08 07 28" 
src="https://github.com/user-attachments/assets/4c0d8876-a39c-420c-bde0-b74883c44ad6";
 />

resize slightly:
<img width="612" height="412" alt="Screenshot 2026-08-06 at 08 07 32" 
src="https://github.com/user-attachments/assets/d941fedc-636e-4157-962e-3c0a0ba2a594";
 />

double click on the last column:
<img width="612" height="412" alt="Screenshot 2026-08-06 at 08 07 38" 
src="https://github.com/user-attachments/assets/3778ff15-df9f-4128-a3a3-0866e216ff2a";
 />

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

PR Comment: https://git.openjdk.org/jdk/pull/31704#issuecomment-5206722784

Reply via email to