Wie lassen sich Zellen in JTable
vorauswä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());
}
}
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.