Mehrere Filter auf Jxtable anwenden

Hertlein79

Grünschnabel
Hallo,

ich habe bei mir die swingx-library von SwingLabs eingebunden und eine JxTable erstellt. Die soll mehr Möglichkeiten auf Hinsicht Funktion und Gestaltung haben. Über ein TableModel wird die JxTable mit Daten gefüllt. Nun soll der Anwender über verschiedene JTextFields durch Eingabe von Strings die Suche nach einem Datensatz einschränken können. Dabei ist jedes JTextField an eine Spalte gebunden. Folgenden Code habe ich bei mir eingebaut:

In der Init():
...
jXTableHl7Data.setModel(model);

tablePatternFilter = new PatternFilter();
tableFilterPipeline = new FilterPipeline(tablePatternFilter);
jXTableHl7Data.setFilters(tableFilterPipeline);

PipelineListener l = new PipelineListener() {
public void filterChanged(PipelineEvent e) {
System.out.println("filterChanged");
}

public void contentsChanged(PipelineEvent arg0) {
System.out.println("contentsChanged");
}
};

tableFilterPipeline.addPipelineListener(l);
...

Wenn der Anwender etwas in die JTextFields schreibt, soll entsprechend der Filter angewandt werden.

private void jTextFieldNameKeyReleased(java.awt.event.KeyEvent evt) {

myPatternFilter.setColumnIndex(1);
myPatternFilter.setPattern(jTextFieldName.getText(), 0);
}
private void jTextFieldCaseNumberKeyReleased(java.awt.event.KeyEvent evt) {

myPatternFilter.setColumnIndex(0);
myPatternFilter.setPattern(jTextFieldCaseNumber.getText(), 0);
}

Die Filter an sich funktionieren. Nur arbeiten diese nicht zusammen! Gebe ich nun in jTextFieldCaseNumber eine Nummer ein wird die Spalte auch schön gefiltert. Gebe ich dann in der zweiten Spalte jTextFieldName etwas ein, wird ausschließlich dieser Filter auf die zweite Spalte angewendet und der Filter von der ersten Spalte ignoriert! Was kann ich tun, damit beide "zusammenarbeiten"?

Ich sitze an diesem Problem schon zwei Tage, habe etliche Foren und Google-Suchen durch und hoffe hier auf Hilfe! Wenn jemand eine andere Idee hat, dieses Problem zu lösen einfach schreiben!

Gruß und schon mal Danke!
Thomas
 
Zurück