Hallo zusammen,
ich benutze die JTable mit dem RowSorter und der Möglichkeit Filter ein und aus zu schalten, funktioniert auch alles wunderbar, bis auf die Situation, dass ich Probleme habe, wenn sich das Model bei eingeschaltetem Filter ändert.
Das Model (abgeleitet vom DefaultTableModel) wird von einem Server notifiziert, wenn sich dort die Daten ändern. Wenn die gefilterten Einträge nicht betroffen sind ist alles gut. Aber wenn sich z.B. ein Wert ändert, der dann nicht mehr zum Filter passt, fliegt mir die Tabelle um die Ohren.
Bisher bin ich hingegangen und hab mir bei einem Update des Models den Filter und die Selektion der Table gemerkt, den Filter ausgeschaltet das Tableupdate durchgeführt und den Filter dann wieder eingeschaltet und die Selektion soweit wie möglich wieder hergestellt, was je nach Größe der Tabelle nicht sehr schön war, da es ganz schön geflackert hat.
Gibt es hier eine andere Vorgehensweise, die man wählen sollte, wenn man damit rechnen muss, dass sich das Filterergebnis bei einem Modelupdate ändert. Wie synchronisiert man sowas am besten in einem multithreaded Client? Gibt es evtl. extra Listener oder abstrakte Methoden für dieses Problem, die ich leider noch nicht entdeckt habe.
Gruß
Arno
ich benutze die JTable mit dem RowSorter und der Möglichkeit Filter ein und aus zu schalten, funktioniert auch alles wunderbar, bis auf die Situation, dass ich Probleme habe, wenn sich das Model bei eingeschaltetem Filter ändert.
Das Model (abgeleitet vom DefaultTableModel) wird von einem Server notifiziert, wenn sich dort die Daten ändern. Wenn die gefilterten Einträge nicht betroffen sind ist alles gut. Aber wenn sich z.B. ein Wert ändert, der dann nicht mehr zum Filter passt, fliegt mir die Tabelle um die Ohren.
Bisher bin ich hingegangen und hab mir bei einem Update des Models den Filter und die Selektion der Table gemerkt, den Filter ausgeschaltet das Tableupdate durchgeführt und den Filter dann wieder eingeschaltet und die Selektion soweit wie möglich wieder hergestellt, was je nach Größe der Tabelle nicht sehr schön war, da es ganz schön geflackert hat.
Gibt es hier eine andere Vorgehensweise, die man wählen sollte, wenn man damit rechnen muss, dass sich das Filterergebnis bei einem Modelupdate ändert. Wie synchronisiert man sowas am besten in einem multithreaded Client? Gibt es evtl. extra Listener oder abstrakte Methoden für dieses Problem, die ich leider noch nicht entdeckt habe.
Gruß
Arno