JTable での非連続セルの選択
JTable では、デフォルトの選択モードでは連続したセルの選択のみが可能です。個別の非連続セル選択を可能にするには、次のアプローチが検討できます。
1. CTRL MOUSE_CLICK:
setSelectionMode(ListSelectionModel.SINGLE_SELECTION) が設定されていない場合、CTRL キーを押しながらセルをクリックすると、複数の不連続なセルを選択できます。
2.変更された ListSelectionModel:
ListSelectionModel は JTable と JList の両方で共有されるため、次の変更された ListSelectionModel を使用できます。 インポートjava.awt.event.InputEvent; インポート java.awt.event.MouseEvent; javax.swing.* をインポートします。 public class NonContSelectionModel extends DefaultListSelectionModel { @オーバーライド protected void processMouseEvent(MouseEvent e) { int 修飾子 = e.getModifiers() |入力イベント.CTRL_MASK; MouseEvent myME = new MouseEvent((Component) e.getSource()、e.getID()、e.getWhen()、修飾子、e.getX()、 e.getY()、e.getXOnScreen()、e.getYOnScreen()、e.getClickCount()、e.isPopupTrigger()、e.getButton()); super.processMouseEvent(myME); } }
import java.awt.Component; import java.awt.event.InputEvent; import java.awt.event.MouseEvent; import javax.swing.*; public class NonContSelectionModel extends DefaultListSelectionModel { @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); } }Demonstration:
次のコード スニペットは、変更された ListSelectionModel:
import を使用して非連続セル選択を可能にする JTable javax.swing.JFrame; javax.swing.JPanelをインポートします。 javax.swing.JScrollPaneをインポートします。 インポートjavax.swing.JTable; インポート javax.swing.SwingUtilities; パブリック クラス NonContJTableSelection { public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @オーバーライド public void run() { JFrame フレーム = new JFrame(); Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel パネル = new JPanel(); String[] columnNames = {"名前", "年齢", "職業"}; オブジェクト[][] データ = { {"ジョン ドゥ"、30 歳、"ソフトウェア エンジニア"}、 {"ジェーン ドゥ"、28 歳、"ドクター"}、 {"ピーター・ジョーンズ"、45歳、"弁護士"} }; JTable テーブル = 新しい JTable(データ, 列名); table.setSelectionModel(new NonContSelectionModel()); JScrollPane スクロールペイン = 新しい JScrollPane(テーブル); パネル.add(スクロールペイン); フレーム.追加(パネル); フレーム.パック(); フレーム.setVisible(true); } }); } }
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3