Heim > Java > javaLernprogramm > Hauptteil

Wie rufe ich mit der JCheckBox-Zeilenauswahl effizient ausgewählte Zeilen aus einer JTable ab?

Susan Sarandon
Freigeben: 2024-11-22 13:03:17
Original
606 Leute haben es durchsucht

How to Efficiently Get Selected Rows from a JTable with JCheckBox Row Selection?

Ausgewählte Zeilen in JTable mit der Nachverfolgung ausgewählter Zeilen abrufen

Problem:
Effizientes Abrufen ausgewählter Zeilen aus a JTable mit einer JCheckBox in der ersten Spalte zur Zeilenauswahl. Sequentielles Durchlaufen wird bei einer großen Anzahl von Zeilen ineffizient.

Traditioneller Ansatz:
Sequentielles Durchlaufen aller Zeilen, um ausgewählte Zeilen zu erhalten. Dieser Ansatz ist problematisch, wenn Tausende von Zeilen verarbeitet werden.

Vorgeschlagener Ansatz:
Modellbasiertes Tracking:

  • Aktualisierung ein Set Enthält die ausgewählten Zeilenindizes, wenn sich der JCheckBox-Wert ändert.
  • Eine Listener-Klasse im Tabellenmodell aktualisiert den Set basierend auf der Zeilenauswahl.

Codebeispiel:

import javax.swing.table.AbstractTableModel;
import java.util.Set;
import java.util.TreeSet;

public class CheckModel extends AbstractTableModel {

    // ...

    private Set<Integer> checked = new TreeSet<>();

    // ...

    @Override
    public void setValueAt(Object aValue, int row, int col) {
        boolean b = (Boolean) aValue;
        rowList.set(row, b);
        if (b) {
            checked.add(row);
        } else {
            checked.remove(row);
        }
        fireTableRowsUpdated(row, row);
    }
}
Nach dem Login kopieren

Zusätzliche Optimierung:

  • Verwenden Sie eine schlanke Datenstruktur wie ein TreeSet, um die ausgewählten Zeilenindizes effizient zu speichern Iteration.
  • Erwägen Sie die Verwendung einer anderen Datenstruktur zum Speichern ausgewählter Zeilen, wenn der Speicherverbrauch ein Problem darstellt.

Vorteile des modellbasierten Ansatzes:

  • Kontinuierlicher zeitlicher Zugriff auf die ausgewählten Zeilen, unabhängig von der Gesamtzahl Zeilen.
  • Keine sequentielle Durchquerung erforderlich, wodurch der Auswahlabruf äußerst effizient ist.

Das obige ist der detaillierte Inhalt vonWie rufe ich mit der JCheckBox-Zeilenauswahl effizient ausgewählte Zeilen aus einer JTable ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage