私はtable.convertRowIndexToModel(int ...)を使うことができると思いますが、より良い解決策があると思います。
あなた自身のconvertRowIndexToModel()を定義する場合(マップ(O(1)など)のクイックルックアップであれば、その解決策で十分です。それがO(n)なら、それは修正する必要があります。
行のループを調べて、それぞれを変換し、結果のインデックスを使用して検索します。
private Row[] getViewToModel() {
if (viewToModel == null) {
int tableModelRowCount = tableModel.getRowCount();
viewToModel = new Row[tableModelRowCount];
for (int row = 0; row < tableModelRowCount; row++) {
viewToModel[row] = new Row(row);
}
if (isSorting()) {
Arrays.sort(viewToModel);
}
}
return viewToModel;
}
と::ここ
は、関心のあるべきTableSorterにおける2つの方法だ
private int[] getModelToView() {
if (modelToView == null) {
int n = getViewToModel().length;
modelToView = new int[n];
for (int i = 0; i < n; i++) {
modelToView[modelIndex(i)] = i;
}
}
return modelToView;
}
JTableでRowSorterをどのように初期化していますか? ここで私が気付いたのは、DefaultRowSorter: "DefaultRowSorterは抽象クラスです。具体的なサブクラスは、setModelWrapperを呼び出すことによって、基礎となるデータへのアクセスを提供する必要があります。setModelWrapperメソッドは、コンストラクタが呼び出された直後にModelWrapperを指定せずにDefaultRowSorterを使用すると、未定義の動作が発生します。 " – LazyCubicleMonkey
table.convertRowIndexToModel(int ...)を使用できると思いますが、より良い解決策があると思います。 – LazyCubicleMonkey
私は 'table.setAutoCreateRowSorter(true)'以外何もしていません。 OracleのJTablesチュートリアルによれば、「このアクションは、javax.swing.table.TableRowSorterのインスタンスである行ソートを定義します。」私はそれを手動で初期化する必要はないと思いますか? – Greg