在JTable中设置列的顺序

Tob*_*ias 4 java jtable

我有一些带有一些列的JTable.我有一个映射到视图中位置的列标识符的HashMap,例如:

TableHeader1 | TableHeader2 | TableHeader3
    sth.           sth.          sth.
Run Code Online (Sandbox Code Playgroud)

我知道:

TableHeader1 -> position 0
TableHeader2 -> position 1
TableHeader3 -> position 2
Run Code Online (Sandbox Code Playgroud)

现在我想重新排序列.我知道在JTable类中有一个名为moveColumn(A,B)的函数.这会将列从A移动到B,B向左或向右移动.我的问题是,我想以特定的方式订购整个表格,我该怎么做?如果我使用moveColumn,我不知道B在哪里被移动,在10个案例中有5个可能是右侧,而在其他情况下则是错误的一侧.

希望你理解我的问题:-)

Gui*_*ume 7

您可以通过删除所有列并按正确顺序添加列顺序来更改列顺序:

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) {
        columnModel.removeColumn(columnModel.getColumn(0));
    }

    for (int i = 0; i < column.length; i++) {
        columnModel.addColumn(column[i]);
    }
}
Run Code Online (Sandbox Code Playgroud)