Tobias H. Tobias H. - 2 months ago 7x
Java Question

Set order of columns in JTable

I have a JTable with some columns. I have a HashMap of the column identifier mapped to the position in the view, for example:

TableHeader1 | TableHeader2 | TableHeader3
sth. sth. sth.

I know that:

TableHeader1 -> position 0
TableHeader2 -> position 1
TableHeader3 -> position 2

Now I want to reorder the columns. I know that there is a function called moveColumn(A, B) within the JTable class. This moves a column from A to B, and B is putted left or right.
My problem is, I want to order the whole table in a specific way, how can I do this?
If I use moveColumn, I cannot know where B has been moved, in 5 out of 10 cases it might be the right side and in the other cases the wrong side.

Hope you understand my problem :-)


You can change the columns order by removing all of them and adding them in the right order:

public static void setColumnOrder(int[] indices, TableColumnModel columnModel) {
    TableColumn column[] = new TableColumn[indices.length];

    for (int i = 0; i < column.length; i++) {
        column[i] = columnModel.getColumn(indices[i]);

    while (columnModel.getColumnCount() > 0) {

    for (int i = 0; i < column.length; i++) {