JXTableは、同様のテーブルを同じようにソートし、ソートするために聞きます
質問
私はすべてが同じ列(ただし、異なるデータ)を有するJXTablesの数を有しています。あなたは、1列の1のヘッダをクリックすることで、データを並べ替えることができます。私が今欲しいもの、他のテーブルは、テーブルの1のヘッダをクリックすると同じようにソートされているということです。
解決
あなたは各JTable
のRowSorter
を参照し、各ソーターとRowSorterListener
として登録メディエータークラスを定義することができます。与えられたソーターが変化した場合、あなたがgetSortKets()
を使用してソートキーの現在のリストを取得し、他のすべてのソーター使用setSortKeys(List<? extends SortKey>)
に渡すことができます。
の例の
まず、メディエータークラスを定義します:
public class SortMediator implements RowSorterListener {
private final List<RowSorter> sorters;
private boolean changing;
public void addRowSorter(RowSorter sorter) {
this.sorters.add(sorter);
}
public void sorterChanged(RowSorterEvent e) {
...
}
}
今、私たちは、与えられたソーターイベントに応答するsorterChanged(RowSorterEvent e)
を実装します:
public void sorterChanged(RowSorterEvent e) {
// The changing flag prevents an infinite loop after responding to the inital
// sort event.
if (!changing) {
changing = true;
RowSorter changedSorter = e.getSource();
List<? extends SortKey> keys = changedSorter.getKeys();
for (RowSorter sorter : sorters) {
if (sorter != changedSorter) {
// Install new sort keys, which will cause the sorter to re-sort.
// The changing flag will prevent the mediator from reacting to this.
sorter.setSortKeys(keys);
}
}
}
}
他のヒント
S /彼はテーブルが異なるデータを比較するために、別々にソートしたいことがあります。:。
私はそれがユーザから離れた制御がかかるため、ということはしないだろう
その代わり、あなたの[表示]メニューのオプション「並べ替え」を追加します。このオプションを変更すると、すべてのテーブルを並べ替えたが、その後、ユーザが特定のテーブルをソートしたいと考えていない限り、放っておいます。
所属していません StackOverflow