JTabel - RowFilter Daten für Berechnung filtern

Hein_nieH

Bekanntes Mitglied
Moinsen,

ich habe eine Frage, welche in ähnlicher Form auch in anderen Foren auftaucht, jedoch nicht ausreichend beantwortet wurde.

Wenn ich einen RowFilter erstelle und diesen im JTable anwende, dann erhalte ich eine gefilterte Tabelle.

Nun möchte ich die gefilterten Zeilen auch für eine Berechnung nutzen.
Gibt es da eine Möglichkeit, um z.B. ein ArrayList aus dem TableModel zu erzeugen, dass durch Anwendung des RowFilters auf die selben Zeilen enthält, so wie sie in der gefilterten Tabelle angezeigt werden?

Gruss Hein_nieH
 

KonradN

Super-Moderator
Mitarbeiter
Du kannst Dir die Daten aus dem Model selbst zusammen stellen. Du hast ja die JTable und damit kannst du die Anzahl der Zeilen abfragen (getRowCount()). Dann gehst Du die die indizes durch (0 bis getRowCount()-1) um dir dann die id des Models zu holen (convertIndexToModel(index)). Damit kannst Du dann den Eintrag aus dem Model lesen z.B. mit getValueAt.

Aber ist das notwendig? Du hast ja die Daten, Du hast den Filter. Du kannst Du direkt den Filter auch auf die Daten anwenden. Notwendig ist es aus meiner Sicht eigentlich nur, wenn Du wirklich Dinge aus der JTable brauchst, weil Da evtl. Spaltenposition, Sortierungen u.s.w. dynamisch sind. Daher hier wirklich genau überlegen, was Du da machen willst. Nicht, dass Du Dir hier x-y Probleme einhandelst.

Also evtl. etwas zur Erläuterung:
Ich sehe eine Trennung zwischen Darstellung selbst und den Daten. Filterungen und so sind da eher bei dem Modul mit den Daten. Wenn Du jetzt hier in dem Bereich etwas machen willst, dann ist die Frage, ob dies nicht evtl. komplett in das Modul Daten gehören könnte. Dann hast Du halt eine Operation, die auch einen Filter nehmen könnte.
Aber auch anders herum ist es valide: Du hast halt auf den Daten gewisse Operationen. Und hier ist es jetzt Sache der UI, dass da eben auf jedem noch sichtbaren Bereich etwas aufgerufen wird. (Wobei ich hier nur eine grobe Trennung UI vs Daten mache. Das ist noch zu grob. Wie ist es aufgeteilt? MVVM? MVC? Der Controller will die Details des JTable Controls nicht wirklich kennen, oder?

Ich hoffe, ich habe Dich mit den Ausführungen jetzt nicht zu sehr verwirrt. Du hast auf jeden Fall ein mögliches technisches Vorgehen auf Basis der JTable und Du kannst Dir den Aufbau deiner Application dies bezüglich frei überlegen.
 

Hein_nieH

Bekanntes Mitglied
Hallo KonradN

vielen Dank für die Antwort.
In meinem Fall habe ich im TableModel ein ArrayList, welches eine Vielzahl von Records enthält.
Jeder im ArrayList enthaltene Record entspricht in der Tabelle einer Row.
Meine Überlegung im Zuge eines Refactoring war es, aus dem ArrayList die Rows zu identifizieren, welche dem definierten RowFilter entsprechen. Hierzu hatte ich vor eine Funktion zu entwickeln, welche abfragt, ob der Record(x) den Kriterien des RowFilters entspricht.

Ich hoffe dass ich mein Problem verständlich beschreiben konnte.

Gruss Hein_nieH
 

mihe7

Top Contributor
Hierzu hatte ich vor eine Funktion zu entwickeln, welche abfragt, ob der Record(x) den Kriterien des RowFilters entspricht.
Das sollte kein größeres Problem darstellen, wenn Du einen Blick in den Quellcode von DefaultRowSorter wirfst, dann findest Du eine private Methode boolean include(int row). Die (und alles, was Du sonst noch brauchst) kannst Du extrahieren, dann brauchst Du nur über Dein Model zu iterieren und die include-Methode "befragen".
 

KonradN

Super-Moderator
Mitarbeiter
Also der Weg, den ich genannt habe, geht so ja auch. Denn Du hast (sowohl im DefaultRowSorter als auch im RowFilter) die Methode convertRowIndexToModel. Wenn Dein Model ein Array von records ist, kannst Du also alle Rows der Tabelle durchgehen, mit der Methode den index im Model bekommen und dann den record aus dem Array z.B. einer List hinzu fügen.

Du hast also den DefaultRowSorter als Variable sorter, dein Record sei Student und du hast ein Array students mit den Daten deines Models:
Java:
List<Student> filteredStudents = new ArrayList<>();
for (int i = 0; i < sorter.getViewRowCount(); i++) {
    int modelRow = sorter.convertRowIndexToModel(i);
    filteredStudents.add(students[modelRow]);
}

Das wäre also direkt die Implementierung unter Nutzung der UI Klassen.
 

Hein_nieH

Bekanntes Mitglied
Aha,
die Schleife war der entscheidende Hinweis.
Werde das dann mal ausprobieren.
Wenn es funktioniert ist mein Problem gelöst.

Vielen Dank für die Hilfestellung

Gruss Hein_nieH
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H JTabel Inhalt löschen AWT, Swing, JavaFX & SWT 1
Salo JTabel Selection listener Bsp. AWT, Swing, JavaFX & SWT 5
P jtabel Zeilen auswählbar, aber nicht editierbar AWT, Swing, JavaFX & SWT 3
ZoXlike Wie kann man ArrayList in JTabel einlesen? [WindowBuilder] AWT, Swing, JavaFX & SWT 1
S MySql -> DefaultTabelModel -> JTabel AWT, Swing, JavaFX & SWT 18
D JTabel: Überschrift, Abstand zwischen Tabellen, Spalten-Farbe ändern AWT, Swing, JavaFX & SWT 2
D Mehrere JTabel in einem Frame positionieren AWT, Swing, JavaFX & SWT 5
Y Swing JTabel verwenden ? AWT, Swing, JavaFX & SWT 11
R JTabel - Header AWT, Swing, JavaFX & SWT 2
L JTabel Methode addRow und deleteRow AWT, Swing, JavaFX & SWT 12
M JTabel mit Bildern AWT, Swing, JavaFX & SWT 2
P JTabel Listener Problem / Editierbarkeit AWT, Swing, JavaFX & SWT 8
T Spaltenbreite bei jTabel in Kombination mit Srollbalken AWT, Swing, JavaFX & SWT 2
M jTabel - Hinzufügen einer Reihe AWT, Swing, JavaFX & SWT 9
T jtabel - Zeile selktierbar aber nicht editierbar AWT, Swing, JavaFX & SWT 2
B JTabel und Daten einschraenken AWT, Swing, JavaFX & SWT 3
W JTabel darf nicht bei Enter AWT, Swing, JavaFX & SWT 2
W JTabel Header - Einfügen eines Textfeldes AWT, Swing, JavaFX & SWT 3
J JTabel: TableHeader und Zellen Problem AWT, Swing, JavaFX & SWT 2
G JTabel und Icons AWT, Swing, JavaFX & SWT 9
B jTabel, MVC und AbstractTableModel AWT, Swing, JavaFX & SWT 6
B Swing RowFilter combine orFilter and andFilter AWT, Swing, JavaFX & SWT 3
C Swing RowFilter AWT, Swing, JavaFX & SWT 7
V JTable - SelectionMode wird durch RowFilter verändert AWT, Swing, JavaFX & SWT 2
S Swing JTable RowSorter trotz RowFilter abschalten? AWT, Swing, JavaFX & SWT 2
M Daten zufällig Einlesen aus einer Datei (binäres Format) AWT, Swing, JavaFX & SWT 7
W Nullpointer Exception beim übertragen von Daten von Scene zu Scene AWT, Swing, JavaFX & SWT 6
W Daten von Controller zu Controller übertragen AWT, Swing, JavaFX & SWT 7
D Columns unabhängig voneinander mit Daten füllen JavaFx AWT, Swing, JavaFX & SWT 1
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
T Anbinden der Tabelle an die Daten AWT, Swing, JavaFX & SWT 5
F JavaFX Tabelle mit Daten füllen AWT, Swing, JavaFX & SWT 9
A JavaFX Daten in eine HTML-Table mit JS schreiben AWT, Swing, JavaFX & SWT 3
ralfb1105 JavaFX Daten zwischen Controllern austauschen- neue Frage AWT, Swing, JavaFX & SWT 7
ralfb1105 JavaFX Daten zwischen Controller "austauschen" AWT, Swing, JavaFX & SWT 65
B AWT Bot um Daten auf Website einzugeben und die Antwort zu bekommen AWT, Swing, JavaFX & SWT 2
L Daten bearbeiten ohne GUI zu blockieren - daten haltung/zurück geben AWT, Swing, JavaFX & SWT 15
ralfb1105 Swing JComboBox update der Daten AWT, Swing, JavaFX & SWT 8
ralfb1105 Swing Dynamischer Graph zum anzeigen Perfomance Daten AWT, Swing, JavaFX & SWT 35
D MySQL Daten in JTable anzeigen AWT, Swing, JavaFX & SWT 2
K TreeTableView (cellFactory) - wie Daten in Spalten einfügen AWT, Swing, JavaFX & SWT 0
A JTable mit Daten füllen AWT, Swing, JavaFX & SWT 1
J TableView Daten werden nicht ausgegeben AWT, Swing, JavaFX & SWT 9
A Swing Wie Daten in der Form speichern? Array oder ArrayList AWT, Swing, JavaFX & SWT 2
C Swing Daten in JTable wiedergeben per TableModel und MVC Pattern AWT, Swing, JavaFX & SWT 16
T JavaFX Model Daten übergeben AWT, Swing, JavaFX & SWT 4
D Swing Größe einer JComboBox im GridBagLayout aufgrund der maximalen Länge der enthaltenen Daten AWT, Swing, JavaFX & SWT 7
J JavaFX Tableview Daten hinzufügen aus anderer Klasse AWT, Swing, JavaFX & SWT 7
J Tableview Daten hinzufügen und aktualisieren AWT, Swing, JavaFX & SWT 5
S AWT Daten über TextField und Button in array speichern AWT, Swing, JavaFX & SWT 5
G Event Handling TableView daten in ein neues Fenster herauslesen? AWT, Swing, JavaFX & SWT 3
S JavaFX (Best Practise) Daten zwischen Controllern austauschen AWT, Swing, JavaFX & SWT 1
thet1983 JavaFX TableView Objekt Daten anzeige AWT, Swing, JavaFX & SWT 2
L JavaFX Verzögerung beim Laden von Daten AWT, Swing, JavaFX & SWT 6
L Daten in neuem Fenster AWT, Swing, JavaFX & SWT 2
Tort-E JavaFX Daten an WebView Komponente AWT, Swing, JavaFX & SWT 1
I JTable: Doppelklick auf Table soll neues Fenster öffnen und Daten aus JTable anzeigen AWT, Swing, JavaFX & SWT 4
S JTable Daten aus Array AWT, Swing, JavaFX & SWT 9
M Java FX Daten an Controller übergeben AWT, Swing, JavaFX & SWT 3
S JList ist leer, aber DefaultListModel hat die Daten? AWT, Swing, JavaFX & SWT 9
M JavaFX Von FXML-Controllerdatei Daten zurückgeben AWT, Swing, JavaFX & SWT 6
F JavaFX Daten aus Tabelle in ComboBox AWT, Swing, JavaFX & SWT 9
B Swing JTable mit Daten - Reihen-Größe anpassen AWT, Swing, JavaFX & SWT 0
D Applet GWT speichert Daten nicht in Datenbank AWT, Swing, JavaFX & SWT 2
S SWT In Listen den Einträgen Daten zuordnen AWT, Swing, JavaFX & SWT 2
T SWT Table (mit Spinner Spalte) Daten auslesen AWT, Swing, JavaFX & SWT 4
F Swing JTable: Daten voreinstellen AWT, Swing, JavaFX & SWT 4
B Daten in eine JTable schreiben AWT, Swing, JavaFX & SWT 3
H Swing JfreeChart aktualisieren - mit daten aus thread AWT, Swing, JavaFX & SWT 3
J valueChanged()-Methode liefert unbrauchbare Daten AWT, Swing, JavaFX & SWT 4
B Datenübergabe zwischen Tabs und Daten speichern AWT, Swing, JavaFX & SWT 2
D SWT TreeViewer: Daten aus Model gelöscht... trotzdem noch im Baum AWT, Swing, JavaFX & SWT 4
D Daten von JDialog an JTable in JFrame übergeben AWT, Swing, JavaFX & SWT 7
O JTable zeigt die alte Daten wieder AWT, Swing, JavaFX & SWT 23
H JTable zeigt keine Daten an AWT, Swing, JavaFX & SWT 5
M Swing Daten von JPanel zu JFrame senden AWT, Swing, JavaFX & SWT 13
C Swing JTable Daten einfügen AWT, Swing, JavaFX & SWT 6
Ollek IndexOutOfBoundsException bei neuen Daten in JTable AWT, Swing, JavaFX & SWT 13
J Swing JTable-Daten Speichern und bei zeilen-änderung beibehalten. AWT, Swing, JavaFX & SWT 6
A Daten umherschieben zwischen zwei Klassen AWT, Swing, JavaFX & SWT 40
L [SWT] Daten und Bilder drucken AWT, Swing, JavaFX & SWT 2
M Trotz richtiger Daten, falsches Bild wird gezeichnet?! AWT, Swing, JavaFX & SWT 4
O JFrame: Daten alle paar Sekunden aktualisieren AWT, Swing, JavaFX & SWT 3
C Daten aus DB -> JTable aktualisieren klappt nicht AWT, Swing, JavaFX & SWT 16
A Swing(Daten zugreifen) AWT, Swing, JavaFX & SWT 25
S JComboBox - veränderliche Daten AWT, Swing, JavaFX & SWT 6
T Daten mittels ComboBox in ein JTable adden AWT, Swing, JavaFX & SWT 7
Ollek Realisierung: JTable zur Laufzeit mit neuen Daten füllen AWT, Swing, JavaFX & SWT 3
GianaSisters Swing jTable Daten unsichtbar AWT, Swing, JavaFX & SWT 12
T JTree Daten in DB schreiben am besten SQL AWT, Swing, JavaFX & SWT 21
W Daten auf Textfeld in anderer Klasse verwenden AWT, Swing, JavaFX & SWT 4
T Daten der gesamten Woche anzeigen AWT, Swing, JavaFX & SWT 2
D Problem mit JFileChooser -> Daten werden mit anführungsstriche in JTable geschrieben AWT, Swing, JavaFX & SWT 8
H JList zeigt die Daten aus dem Array nicht an! AWT, Swing, JavaFX & SWT 13
E Daten von JDialog nach JFrame übertragen AWT, Swing, JavaFX & SWT 4
K TableModel mit Daten aus Datenbank füllen AWT, Swing, JavaFX & SWT 7
M JTree mit eigenen Knoten - Zugriff auf Daten AWT, Swing, JavaFX & SWT 6
L Swing Daten in JTable aktualisieren AWT, Swing, JavaFX & SWT 5
H Swing Tabelle nach Klick auf Button mit Daten füllen? AWT, Swing, JavaFX & SWT 2
B Swing JList Daten löschen AWT, Swing, JavaFX & SWT 13

Ähnliche Java Themen

Neue Themen


Oben