我有一个Java JTable,它存储大约8000行,10列,并且一切正常。

当我单击列标题时,整个JTable在第一个实例中将按该列中的数据升序排序,再次单击则将按降序对数据排序。

我想在一个特定的列(双列-存储%的列)上更改此行为,以便第一次单击将数据降序排列,然后第二次单击将升序-因为我对条目最感兴趣最高%s。

这与第一次显示表格时更改原始排序顺序无关。该表最初是按ID编号(第一列)升序排序的,这正是我想要的。

这是关于更改基于其他列的重新排序时的行为,以便第一次单击将是降序排列。

任何人有任何想法吗?

最佳答案

    int noOfClicks = 1;
    public void arrange(){

TableRowSorter<TableModel> sorter = new TableRowSorter<>(table.getModel());
table.setRowSorter(sorter);
List<RowSorter.SortKey> sortKeys = new ArrayList<>();

int columnIndexToSort = 1;
    if (noOfClicks%2==0){
    //firstClick
    sortKeys.add(new RowSorter.SortKey(columnIndexToSort,   SortOrder.ASCENDING));

    }else{
   sortKeys.add(new RowSorter.SortKey(columnIndexToSort, SortOrder.DESCENDING));
    }
    ++noOfClicks;


sorter.setSortKeys(sortKeys);
sorter.sort();

    }


您可以使用上述方法进行操作。如果可以存储noOfclicks
然后您可以检查是否应按升序或降序排列。如果noOfclicks是偶数,则可以按升序排列表格。每次点击的点击次数都将增加+1。

10-08 12:53