RFR: 4466930: JTable.selectAll boundary handling [v3]

Abhishek Kumar abhiscxk at openjdk.org
Tue Mar 18 06:49:12 UTC 2025


On Tue, 18 Mar 2025 05:59:01 GMT, Prasanta Sadhukhan <psadhukhan at openjdk.org> wrote:

>> JTable.selectAll doesn't do anything if there are no rows or no columns. 
>> But it should still select all columns if there are no rows and the other way round. 
>> It is seen that isColumnSelected() will return false for all columns after calling selectAll() if there happened to be no rows.
>> 
>> Fix is made to select all columns even if there are no rows and similarly for rows if there are no columns.
>
> Prasanta Sadhukhan has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Code duplication removed, subtest added

src/java.desktop/share/classes/javax/swing/JTable.java line 2154:

> 2152:         int oldAnchor = getAdjustedIndex(selModel.getAnchorSelectionIndex(), true);
> 2153: 
> 2154:         setRowSelectionInterval(0, rowCount-1);

Suggestion:

        setRowSelectionInterval(0, rowCount - 1);

src/java.desktop/share/classes/javax/swing/JTable.java line 2168:

> 2166:         int oldAnchor = getAdjustedIndex(selModel.getAnchorSelectionIndex(), false);
> 2167: 
> 2168:         setColumnSelectionInterval(0, columnCount-1);

Suggestion:

        setColumnSelectionInterval(0, columnCount - 1);

src/java.desktop/share/classes/javax/swing/JTable.java line 2182:

> 2180:         int oldLead;
> 2181:         int oldAnchor;
> 2182:         ListSelectionModel selModel;

Unused variable oldLead, oldAnchor, selModel

test/jdk/javax/swing/JTable/TestTableSelectAll.java line 45:

> 43: 
> 44:     private static void testColumnSelect() {
> 45:         boolean colSelNoRow, colSelWithRow;

Can be declare on separate lines.

test/jdk/javax/swing/JTable/TestTableSelectAll.java line 62:

> 60:         // After selectAll(), I would expect all columns to be selected, no matter
> 61:         // whether there are rows or not.
> 62:         System.out.println("Column 0 is selected: "+ colSelNoRow);

Suggestion:

        System.out.println("Column 0 is selected: " + colSelNoRow);

test/jdk/javax/swing/JTable/TestTableSelectAll.java line 69:

> 67: 
> 68:         colSelWithRow = table.isColumnSelected(0);
> 69:         System.out.println("Column 0 is selected: "+ colSelWithRow);

Suggestion:

        System.out.println("Column 0 is selected: " + colSelWithRow);

test/jdk/javax/swing/JTable/TestTableSelectAll.java line 77:

> 75: 
> 76:     private static void testRowSelect() {
> 77:         boolean rowSelNoColumn, rowSelWithColumn;

Can be declare on separate lines.

test/jdk/javax/swing/JTable/TestTableSelectAll.java line 84:

> 82:         JTable table = new JTable(data);
> 83: 
> 84:         // columns can be selected

Suggestion:

        // rows can be selected

test/jdk/javax/swing/JTable/TestTableSelectAll.java line 94:

> 92:         // After selectAll(), I would expect all rows to be selected, no matter
> 93:         // whether there are columns or not.
> 94:         System.out.println("Row 0 is selected: "+ rowSelNoColumn);

Suggestion:

        System.out.println("Row 0 is selected: " + rowSelNoColumn);

test/jdk/javax/swing/JTable/TestTableSelectAll.java line 100:

> 98: 
> 99:         rowSelWithColumn = table.isRowSelected(0);
> 100:         System.out.println("Row 0 is selected: "+ rowSelWithColumn);

Suggestion:

        System.out.println("Row 0 is selected: " + rowSelWithColumn);

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

PR Review Comment: https://git.openjdk.org/jdk/pull/24025#discussion_r2000310414
PR Review Comment: https://git.openjdk.org/jdk/pull/24025#discussion_r2000311674
PR Review Comment: https://git.openjdk.org/jdk/pull/24025#discussion_r2000311989
PR Review Comment: https://git.openjdk.org/jdk/pull/24025#discussion_r2000312998
PR Review Comment: https://git.openjdk.org/jdk/pull/24025#discussion_r2000316147
PR Review Comment: https://git.openjdk.org/jdk/pull/24025#discussion_r2000316380
PR Review Comment: https://git.openjdk.org/jdk/pull/24025#discussion_r2000317018
PR Review Comment: https://git.openjdk.org/jdk/pull/24025#discussion_r2000317445
PR Review Comment: https://git.openjdk.org/jdk/pull/24025#discussion_r2000317739
PR Review Comment: https://git.openjdk.org/jdk/pull/24025#discussion_r2000317890


More information about the client-libs-dev mailing list