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

我一直在尝试创建自定义TableRowSorter,但是在弄清楚它并使它执行我想要的操作时遇到了一些麻烦。

有人知道怎么做吗?
谢谢

最佳答案

您需要一个类来保存该值是否为摘要。
像这样

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

关于java - Java JTable —自定义行排序器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14630342/

10-11 04:56