ホームページ > Java > &#&チュートリアル > JTable で非連続セル選択を有効にする方法は?

JTable で非連続セル選択を有効にする方法は?

Susan Sarandon
リリース: 2024-11-09 11:28:02
オリジナル
867 人が閲覧しました

How to Enable Non-Continuous Cell Selection in a JTable?

個々の非連続 JTable セルの選択

ユーザーが JTable 内の複数の非連続セルを選択できるようにすることは、さまざまなアプリケーションにとって有益な機能となります。この機能を実現するためのアプローチを詳しく説明します。

組み込みオプション

標準の JTable コンポーネントには、複数の非連続セルを選択するための直接オプションがありません。ただし、組み合わせて活用できる 2 つのメソッドがあります:

  • setCellSelectionEnabled(true): このメソッドでは、個々のセルを選択できます。
  • setSelectionModel (new DefaultListSelectionModel()): このメソッドは、デフォルトの行選択モデルをリスト選択モデル。非連続選択をサポートします。

ただし、このアプローチでは、単一の行または列内の連続したセルの選択のみが可能です。

マウス イベント処理の変更

別のアプローチは、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート