Wie lassen sich Zellen in JTable vorauswählen?

JTable stellt Methoden zur Vorauswahl von Zeilen und Spalten bereit. Hiermit ist es auch möglich, einzelne Tabellenbereiche vorauszuwählen.

Das Beispiel zeigt einen JFrame mit einer JTable und einem Button zum Löschen einer Tabellenauswahl.
Das GUI wird im Wesentlichen in der Methode initGUI() erzeugt. Dort wird zunächst ein TabelModel generiert. Es dient zum Vorhalten der Tabellendaten und wird in einer geschachtelten Schleife mit einfachen numerischen Werten belegt, bevor es dem Konstruktor der neu erzeugten JTable übergeben wird.

Die drei dann folgenden Methodenaufrufe bewirken die Vorauswahl der Tabellenzellen:

table.setColumnSelectionAllowed(true);
Die Methode erlaubt mit dem Parametert true die Auswahl von Spalten, sodass beim Aktivieren einer Zelle nicht die gesamte Zeile ausgewählt wird.
table.setRowSelectionInterval(3, 6);
Die Methode wählt die 4., 5., 6. und 7. Reihe aus. Die Zählung beginnt bei 0
table.setColumnSelectionInterval(2, 3);
Die Methode selektiert die 3. und 4. Spalte.

Nach Zuweisen der Rahmenfarbe wird die Tabelle auf das Fenster gesetzt. Im unteren Bereich des Fensters wird schließlich noch ein JButton gezeigt, der es ermöglicht, mit Hilfe von JTable#clearSelection() die Auswahl aufzuheben.

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;

public class PreSelectTableCells {

    public PreSelectTableCells() {
        initGUI();
    }

    private void initGUI() {
        JFrame frame = new JFrame("Zeilen und Spalten ausw\u00E4hlen");
        DefaultTableModel model = new DefaultTableModel(10, 10);
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                model.setValueAt(i + "|" + j, i, j);
            }
        }
        JTable table = new JTable(model);
        table.setColumnSelectionAllowed(true);
        table.setRowSelectionInterval(3, 6);
        table.setColumnSelectionInterval(2, 3);
        table.setGridColor(Color.GRAY);
        frame.add(table, BorderLayout.CENTER);

        JButton deselButt = new JButton("Auswahl aufheben");
        deselButt.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                table.clearSelection();
            }
        });
        frame.add(deselButt, BorderLayout.SOUTH);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new PreSelectTableCells());
    }
}

Vorauswahl Tabellenzellen

Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.