TableRowSorter/DefaultRowSorter が提供するものとは異なる挿入動作を持つ JTable が必要です。
ユーザーが行を挿入すると、新しく挿入された行がカーソルがあった行の下に移動し、カーソルが新しく挿入された行に配置されるようなテーブルが必要です。例を挙げて説明しましょう。
初期状態 - テーブルには 4 つの行があります:
0. Row 1
1. Row 2 <-- cursor here
2. Row 3
3. Row 4
ユーザーのカーソルは 2 行目にあり、ユーザーは挿入をトリガーします。新しく挿入された行が下に表示され、カーソルもそこに移動します。
0. Row 1
1. Row 2
2. New row <-- cursor here
3. Row 3
4. Row 4
この問題を解決するには2つのアプローチがあることをよく理解しています。
最初のアプローチは、モデルを変更することです。そのため、挿入はモデルの適切な場所で行われます。挿入された行の下のすべての行でモデルのインデックスが変更されることを意味するため、このソリューションは好きではありません。これは私が必要とすることを達成するための最も簡単な方法ですが、モデル インデックスの変更によって大きなオーバーヘッドが発生する可能性があります...
2 番目のアプローチは、独自の videoToModel[] および modelToView[] 配列を維持し、行が挿入されたときに正しい順序を維持する RowSorter を実装することです。当然、私は TableRowSorter を拡張することから始めましたが、問題は modelToView と viewToModel がプライベート配列であり、それらにアクセスできないため、行がフィルター処理されたときに問題が発生することです...
正しく行うには時間がかかるため、独自の RowSorter 実装を作成しないようにしています...
UPDATE 2013-10-07: 独自の RowSorter を実装することでこれを達成しました。両方のアプローチを試した後、2 番目のアプローチの方が柔軟性が高いことに気付きました。