AbstractTableModel を使用して JTable から選択された行を効率的に取得する
大規模なデータセットを扱う場合、JTable から選択された行を取得するプロセスが非効率になる可能性がありますこれは、すべての行を順次走査する必要があるためです。この記事では、AbstractTableModel ベースのリスナー メカニズムを使用したより効率的なアプローチを紹介します。
問題ステートメント
行選択の最初の列に JCheckBox がある JTable で、行を選択すると、すべての行を反復処理して、チェックされた行を収集する必要があります。データセットが大きくなるにつれて、これは望ましくないアプローチになります。
推奨される解決策: TableModel リスナーを実装する
解決策には、TableModelListener を JCheckBox 列に追加することが含まれます。リスナー クラス内で JCheckBox の状態が変化する (SELECTED/DESELECTED) と、selectedRows 配列が更新されます。さらに、リスナー クラス内で table.getSelectedRow(..) を呼び出して、選択した行のインデックスを取得できます。
より良い方法はありますか?
提供された例は、TableModel が Set
実装の詳細
CheckModel クラスは AbstractTableModel を拡張し、rowList とチェックされた行を処理します。設定し、チェックボックスの状態の変化に基づいてそれらを維持します。 DisplayPanel クラスには、テーブル モデルの変更をリッスンし、それに応じて表示を更新する JList が含まれています。
結論
小規模なデータセットの場合は、順次行トラバーサル アプローチで十分な場合がありますが、 TableModel リスナーまたは上記の代替方法を使用すると、大規模なデータセットを扱うときに効率が大幅に向上します。これらの手法により、テーブルのサイズに関係なく、選択した行を効率的に取得できます。
以上が大規模なデータセットを含む JTable から選択した行を効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。