Java JTable - 自定义行分类器

时间:2013-01-31 16:20:13

标签: java swing jtable tablerowsorter

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

我一直在尝试创建一个自定义的TableRowSorter,但是我很难搞清楚它并让它做我想做的事。

任何人都知道如何做到这一点? 感谢

1 个答案:

答案 0 :(得分:3)

您需要一个类来确定值是否为摘要。 像这样的东西

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);
  }
}

您需要在列中显示类SummarizedValue的对象,并且行分类器应返回SummaryComparator。您还需要在RowSorter中覆盖切换行为以使用SummaryBackComparator