Hallo,
ich versuche seit 2 Tagen vergeblich einem RowFilter die Kombination aus einem or & and Filter verständlich zu machen.
Hier das Ausgangsproblem:
Ich besitze eine Tabelle mit 8 Kriterien. Eine einfache andFilterung ist nicht das Problem. Jedoch will ich gewisse Kriterien mehrfach verwenden. D.h. (Kriterium 1 oder Kriterium 2 aus Spalte 1) UND (Kriterium 3 oder Kriterium 4 aus Spalte 2).
Es erscheint keine Fehlermeldung, jedoch bleibt die Auswahl leer :bahnhof:
Hier mein bisheriger Quellcode:
Für jede Hilfe die kommt, danke im Voraus.
Grüße
ich versuche seit 2 Tagen vergeblich einem RowFilter die Kombination aus einem or & and Filter verständlich zu machen.
Hier das Ausgangsproblem:
Ich besitze eine Tabelle mit 8 Kriterien. Eine einfache andFilterung ist nicht das Problem. Jedoch will ich gewisse Kriterien mehrfach verwenden. D.h. (Kriterium 1 oder Kriterium 2 aus Spalte 1) UND (Kriterium 3 oder Kriterium 4 aus Spalte 2).
Es erscheint keine Fehlermeldung, jedoch bleibt die Auswahl leer :bahnhof:
Hier mein bisheriger Quellcode:
Java:
List<RowFilter<Object, Object>> filtersAND = new ArrayList<RowFilter<Object, Object>>(2);
List<RowFilter<Object, Object>> filtersOR = new ArrayList<RowFilter<Object, Object>>(2);
ArrayList<Integer> columns = new ArrayList<Integer>(); //merkt sich die Kriterien, damit ein Zweitkriterium als Oder gefiltert wird
if (!kundenkategorie.equals("")) {
filtersAND.add(RowFilter.regexFilter(kundenkategorie, table.getColumnIndex("Kundenkategorie")));
columns.add(table.getColumnIndex("Kundenkategorie"));
}
if (!vertragsgrundlage.equals("")) {
filtersAND.add(RowFilter.regexFilter(vertragsgrundlage, table.getColumnIndex("Vertragsgrundlage")));
columns.add(table.getColumnIndex("Vertragsgrundlage"));
}
for (int i = 0; i < filter_model.size(); i++) {
String eintrag = filter_model.get(i);
String spalte = eintrag.substring(0, eintrag.indexOf(":"));
eintrag = eintrag.substring(eintrag.indexOf(":") + 1);
if (columns.contains(table.getColumnIndex(spalte))) {
filtersOR.add(RowFilter.regexFilter(eintrag, table.getColumnIndex(spalte)));
} else {
filtersAND.add(RowFilter.regexFilter(eintrag, table.getColumnIndex(spalte)));
columns.add(table.getColumnIndex(spalte));
}
}
RowFilter<Object, Object> or;
RowFilter<Object, Object> and;
ArrayList<RowFilter<Object, Object>> finalFilters = new ArrayList<RowFilter<Object, Object>>();
if (filtersOR.size() > 0) {
or = RowFilter.orFilter(filtersOR);
finalFilters.add(or);
}
if (filtersAND.size() > 0) {
and = RowFilter.andFilter(filtersAND);
finalFilters.add(and);
}
TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(table.getModel());
sorter.setRowFilter(RowFilter.andFilter(finalFilters));
UebersichtPanel.this.table.setRowFilter(RowFilter.andFilter(finalFilters));
Für jede Hilfe die kommt, danke im Voraus.
Grüße
Zuletzt bearbeitet: