ユーザーが JTable 内の複数の非連続セルを選択できるようにすることは、さまざまなアプリケーションにとって有益な機能となります。この機能を実現するためのアプローチを詳しく説明します。
標準の JTable コンポーネントには、複数の非連続セルを選択するための直接オプションがありません。ただし、組み合わせて活用できる 2 つのメソッドがあります:
ただし、このアプローチでは、単一の行または列内の連続したセルの選択のみが可能です。
別のアプローチは、JTable のマウス イベント処理を変更することです。 processMouseEvent メソッドをオーバーライドすることで、Control キーを押したマウス クリックをセル選択の切り替えとして JTable に強制的に処理させることができます。これにより、位置に関係なく個々のセルを選択できるようになります。
import java.awt.Component; import java.awt.event.InputEvent; import java.awt.event.MouseEvent; import javax.swing.JTable; public class TableSelection extends JTable { @Override protected void processMouseEvent(MouseEvent e) { int modifiers = e.getModifiers() | InputEvent.CTRL_MASK; MouseEvent myME = new MouseEvent((Component) e.getSource(), e.getID(), e.getWhen(), modifiers, e.getX(), e.getY(), e.getXOnScreen(), e.getYOnScreen(), e.getClickCount(), e.isPopupTrigger(), e.getButton()); super.processMouseEvent(myME); } }
このアプローチを使用すると、JTable 内の個々の非連続セルを選択できるようになります。これには、ListSelectionModel または JTable の選択モードを変更する必要がないことに注意してください。
質問で示唆されているように、独自の ListSelectionModel を実装すると、選択メカニズムを完全に制御できます。このアプローチは最も高い柔軟性を提供し、必要に応じて選択動作をカスタマイズできます。
並べ替えやフィルタリングなどの一部の JTable 操作は期待どおりに動作しない可能性があることに注意することが重要です。不連続なセル選択を使用します。さらに、選択したセルの色付けやスタイル設定を手動で処理する必要がある場合があります。
JTable は非連続セルの選択をネイティブにサポートしていませんが、前述の手法はこれを実現するための効果的なソリューションを提供します。機能性。制限を理解し、適切な方法をカスタマイズすることで、JTable のユーザー エクスペリエンスを強化し、特定のアプリケーション要件に応えることができます。
以上がJTable で非連続セル選択を有効にする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。