我有一个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。