„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 bekomme ich ausgewählte Zeilen von einem JTable mit JCheckBox -Zeilenauswahl effizient?

Wie bekomme ich ausgewählte Zeilen von einem JTable mit JCheckBox -Zeilenauswahl effizient?

Gepostet am 2025-02-06
Durchsuche:925

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

Erhalten ausgewählter Reihen in jtable mit ausgewählten Zeilenverfolgungsfest JTABLE mit einer JCheckbox in der ersten Spalte für die Zeilenauswahl. Sequentielle Durchquerung wird mit einer großen Anzahl von Zeilen ineffizient.

traditioneller Ansatz: nacheinander durch alle Zeilen iteriert, um ausgewählte Zeilen zu erhalten. Dieser Ansatz ist im Umgang mit Tausenden von Zeilen problematisch. a set , das die ausgewählten Zeilenindizes enthält, wenn sich der Wert jCheckBox ändert.

Eine Hörerklasse auf dem Tabellenmodell aktualisiert die Set basierend auf der Zeilenauswahl.


Code Beispiel:

import javax.swing.table.abstractTablemodel; Java.util.set importieren; import Java.util.Treeset; public class checkmodel erweitert abstractTablemodel { // ... private set checked = new treeset (); // ... @Override public void setvalueat (Objekt Avalue, int Row, int col) { boolean b = (boolean) avalue; rowList.set (row, b); if (b) { checked.add (Reihe); } anders { checked.remove (Reihe); } FireTablerowSUpdated (Reihe, Reihe); } }
zusätzliche Optimierung:

  • Verwenden Sie eine leichte Datenstruktur, wie z. &&&] überlegen ] Konstante Zeitzugriff auf die ausgewählten Zeilen, unabhängig von der Gesamtzahl der Zeilen.
  • keine sequentielle Durchquerung, wodurch die Auswahlabruf hocheffizient wird.
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