1

我有一个 JTable,它从数据库加载数据,然后在表的底部生成一个摘要行。我希望用户能够对表格进行排序,但我希望摘要行始终保留在表格的底部。

我一直在尝试创建一个自定义 TableRowSorter,但我在弄清楚它并让它做我想做的事情时遇到了一些麻烦。

有人知道怎么做吗?谢谢

4

1 回答 1

3

You need a class which holds whether the value is a summary or not. Something like this

public class SummarizedValue {
  public Integer value;
  public boolean summarized;
  public String toString() { 
    return null == value? "" : value.toString();
  }
}

public class SummaryComparator implements Comparator<SummarizedValue> {
  public int compare(SummarizedValue v1, SummarizedValue v2) {
    if (v1.summarized) return 1;
    if (v2.summarized) return -1;
    return v1.value.compareTo(v2.value);
  }
}

public class SummaryBackComparator implements Comparator<SummarizedValue> {
  public int compare(SummarizedValue v1, SummarizedValue v2) {
    if (v1.summarized) return 1;
    if (v2.summarized) return -1;
    return v2.value.compareTo(v1.value);
  }
}

You need to display the objects of class SummarizedValue in your column and your row sorter should return SummaryComparator. Also your need to override toggle behaviour in RowSorter to use SummaryBackComparator.

于 2013-01-31T17:21:57.837 回答