ホームページ >Java >&#&チュートリアル >チェックボックスを使用して JTable から選択した行を効率的に取得するにはどうすればよいですか?

チェックボックスを使用して JTable から選択した行を効率的に取得するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-28 08:26:10974ブラウズ

How Can I Efficiently Retrieve Selected Rows from a JTable with Checkboxes?

AbstractTableModel を使用した JTable 内の選択された行の効率的な取得

行の選択を可能にするために最初の列にチェックボックスがある大きなテーブルを扱う場合、選択した行をすべての行に対して順番に実行すると、非効率になる可能性があります。この記事では、不必要な走査を回避するためのリスナーベースのメカニズムを使用した代替アプローチについて説明します。

指定されたコード例では、カスタム TableModel である CheckModel は、チェックされた変数で選択された行インデックスのセットを維持します。このセットは、setValueAt() メソッドを通じてチェックボックスの値 (列 1) が変更されるたびに更新されます。

隣接する JList は、CheckModel の変更をリッスンすることによって、現在選択されている行番号を視覚化します。これにより、リストには常に最新の選択行が反映されます。 TreeSet データ構造は、要素の自然な順序を保持します。

リスナーベースのアプローチの利点:

  • パフォーマンスの向上: のみ実際にチェックされる行が更新されるため、すべての行を反復処理する必要がなくなります。このアプローチは、大きなテーブルでも適切に拡張できます。
  • イベント駆動型更新: 選択した行への変更はすぐにリスナーに反映され、リアルタイムの精度が維持されます。
  • 再利用可能なソリューション: リスナーベースのメカニズムは、選択された行を高速に取得できる他のテーブル モデルで再利用できます。

追加の考慮事項:

  • メモリ消費: TreeSet は、 ArrayList ですが、その効率上の利点により価値があります。
  • 選択範囲: マウスのドラッグで複数の連続する行が選択されている場合、リスナーは最後に選択された行のチェックボックスの変更のみを検出します。選択範囲全体をキャプチャするには、追加のロジックが必要になる場合があります。
  • 複数選択モード: このアプローチでは、一度に 1 行のみを選択できることを前提としています。複数選択モードの場合、リスナーへの変更が必要になる場合があります。

以上がチェックボックスを使用して JTable から選択した行を効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。