Skip to content
Advertisement

Disable Column Header sorting on a JTable

Is it possible to disable manual sorting on a JTable after adding a sorter? So I have a JTable that has the following sorter attached to it (basically sorts by column 3 when the table is initialised):

JTable jTable = new JTable();
RowSorter<TableModel> sorter = new TableRowSorter<TableModel>(jTable.getModel());
List<RowSorter.SortKey> sortKeys = new ArrayList<RowSorter.SortKey>();
sortKeys.add(new RowSorter.SortKey(3, SortOrder.DESCENDING));
sorter.setSortKeys(sortKeys); 
jTable.setRowSorter(sorter);

This works fine, however the user is still able to click on the column headers in the table and sort by any of the columns, which I want to disable. Is this possible?

Advertisement

Answer

You can use the setSortable method of TableRowSorter as below:

sorter.setSortable(0, false); 

to make column 0 non-sortable. You can apply it on the column according to your requirement.

User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement