1

データベースからデータをロードし、テーブルの下部に要約行を生成するJTableがあります。ユーザーがテーブルを並べ替えられるようにしたいのですが、サマリー行を常にテーブルの一番下に残したいのです。

カスタムTableRowSorterを作成しようとしていますが、それを理解して、必要な処理を実行するのに問題があります。

誰もがこれを行う方法を知っていますか?ありがとう

4

1 に答える 1

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

于 2013-01-31T17:21:57.837 に答える