選択行追跡による JTable の選択行の取得
問題:
選択行の効率的な取得行選択用の最初の列に JCheckBox がある JTable。行数が多いと、順次トラバーサルは非効率的になります。
従来のアプローチ:
すべての行を順次反復して、選択された行を取得します。このアプローチは、数千行を処理する場合に問題があります。
提案されたアプローチ:
モデルベースの追跡:
コード例:
import javax.swing.table.AbstractTableModel; import java.util.Set; import java.util.TreeSet; public class CheckModel extends AbstractTableModel { // ... private Set<Integer> checked = new TreeSet<>(); // ... @Override public void setValueAt(Object aValue, int row, int col) { boolean b = (Boolean) aValue; rowList.set(row, b); if (b) { checked.add(row); } else { checked.remove(row); } fireTableRowsUpdated(row, row); } }
追加の最適化:
モデルベースのアプローチの利点:
以上がJCheckBox 行選択を使用して JTable から選択された行を効率的に取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。