„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie aktiviere ich die nicht kontinuierliche Zellenauswahl in JTable?

Wie aktiviere ich die nicht kontinuierliche Zellenauswahl in JTable?

Veröffentlicht am 16.11.2024
Durchsuche:385

How to Enable Non-Continuous Cell Selection in JTable?

Auswählen nicht zusammenhängender Zellen in JTable

In JTable erlaubt der Standardauswahlmodus nur die Auswahl zusammenhängender Zellen. Um eine individuelle, nicht kontinuierliche Zellauswahl zu ermöglichen, können die folgenden Ansätze in Betracht gezogen werden:

1. CTRL MOUSE_CLICK:

Wenn setSelectionMode(ListSelectionModel.SINGLE_SELECTION) nicht festgelegt ist, ermöglicht das Gedrückthalten der STRG-Taste beim Klicken auf Zellen die Auswahl mehrerer nicht kontinuierlicher Zellen.

2. Geändertes ListSelectionModel:

Da ListSelectionModel sowohl von JTable als auch von JList gemeinsam genutzt wird, kann das folgende modifizierte ListSelectionModel verwendet werden:

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);
    }
}

Dieses Modell kann mit setSelectionModel(new NonContSelectionModel()) auf JTable angewendet werden.

Demonstration:

Das folgende Code-Snippet erstellt ein JTable, das eine nicht kontinuierliche Zellenauswahl mithilfe des geänderten ListSelectionModel:

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;

public class NonContJTableSelection {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame frame = new JFrame();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                JPanel panel = new JPanel();
                String[] columnNames = {"Name", "Age", "Profession"};
                Object[][] data = {
                        {"John Doe", 30, "Software Engineer"},
                        {"Jane Doe", 28, "Doctor"},
                        {"Peter Jones", 45, "Lawyer"}
                };
                JTable table = new JTable(data, columnNames);
                table.setSelectionModel(new NonContSelectionModel());
                JScrollPane scrollPane = new JScrollPane(table);
                panel.add(scrollPane);

                frame.add(panel);
                frame.pack();
                frame.setVisible(true);
            }
        });
    }
}
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3