JTable - 2 Filter einbinden

b0ni

Grünschnabel
Hallo,

ich habe eine JTable mit eigenem Model (AbstractTableModel) und
RowSorter/RowFilter. Über eine ComboBox wähle ich die Filterspalte aus
und in einem Textfield tippe ich dann den Filter ein.
Außerdem kann ich über RadioButtons eine boolean-Spalte filtern (nur Datensätze die true/false sind anzeigen).

Allerdings sind diese 2 Filter leider nicht unäbhängig voneinander, d.h. wenn ich mir erst nur 'true' Datensätze anzeigen lasse und dann über das Textfield in einer anderen Spalte nach "Wurst" filtere, werden alle Zeilen mit Wurst angezeigt egal ob true oder false in der boolean-Spalte.

Was ich brauche:
Wenn nach false gefiltert ist und dann der andere Filter hinzukommt, sollen nur Zeilen angezeigt werden, die 'Wurst' enthalten UND false sind.
bzw. umgekehrt: filtere ich erst nach "Wurst-Zeilen" ;) und schalte dann den boolean-Filter hinzu -> nur Wurst-Zeilen die false sind.

Falls jemand eine Idee hat, wäre ich mehr als dankbar, stehe nämlich momentan schwer auf dem Schlauch.

Gruß, b0Ni
 
So, hab's selbst rausgefunden ;)

mit der RowFilter-Methode .andFilter(Iterable<? extends RowFilter<? super M,? super I>> filters)


List<RowFilter<Object,Object>> filters = new ArrayList<RowFilter<Object,Object>>(2);
filters.add(RowFilter.regexFilter("foo"));
filters.add(RowFilter.regexFilter("bar"));
RowFilter<Object,Object> fooBarFilter = RowFilter.andFilter(filters);
 
Zurück