Lazy Loading mit JTable

Spot84

Aktives Mitglied
Hallo,
folgendes Problem:
ich habe eine JTable, um die Funktionalität erweitert das wenn man runter scrollt die anzuzeigenden Daten dynamisch aus einer Datenbank ausgelesen werden. Hierzu habe ich die getValueAt Methode so erweitert, dass immer nur die Daten die gerade angezeigt werden, auch geholt werden. Wird beispielsweise getValueAt für die ersten 10 Zeilen aufgerufen werden die Daten für diese Zeilen geholt und in das Table Model geschrieben.

Das funktioniert soweit auch ganz gut, allerdings habe ich das Problem dass wenn man den Schiebebalken mit der Maus anfässt und schnell runterzieht,
er halt alle! Daten aus der Datenbank holt. Was ich aber möchte ist, dass nur die Daten die nach dem Schieben des Scrollbalkens in der JTable angezeigt werden
auch aus der Datenbank geholt werden. Also beispielsweise nur die letzten 10 Zeilen wenn der Schiebebalken nach ganz unten gezogen wurde.

Hat dort jemand eine Idee? Ich weiss ich kann bestimmt das Loslassen des Scrollbalken mit einem Listener abfangen, aber wie baue ich das in meine getValueAt
Methode ein?


Vielen Dank schon einmal im Vorraus!

Gruß!
 
Zuletzt bearbeitet:
mmhn.... kannst du der Scrolleiste irgendwelche Listener anahängen um bei der Veränderung infomiert zu werden? Vielleicht gibts da ein isAdjusting wie beim list selection listener... darauf könntest du irgendwie reagieren...
 
getValueAt() sollte vielleicht gar nichts selber laden, nur vorhandene Daten zurückgeben oder sonst Leerstring

ein Listener an die ScrollBar wäre dann auch meine Idee, macht erstmal nichts aber merkt sich die Aktionen
und wenn dann eine Zeit lang (x ms) nichts mehr passiert ist, dann werden die aktuell benötigten Daten geladen und dieser Abschnitt der Tabelle neu gezeichnet,
was schwer zu berechnen sein mag,
und langsames Scrollen könnte auch noch Probleme machen, das wohl aus den Ereignissen (Zelen-Änderung pro Sekunde) erkennen und dann auch aktualisieren
 

Zurück
Oben