Szenario:
Sie verwenden eine JTable mit einem benutzerdefinierten TableModel, um den Inhalt einer Sammlung anzuzeigen, die sich in einer Datenbank oder im Netzwerk oder wo auch immer befindet.
Der brute Weg, um dies zu erreichen, besteht darin, die gesamte Sammlung auf einmal zu laden. Angenommen, das ist aufgrund der benötigten Ressourcen nicht praktikabel.
Der einfache Weg, dieses Problem zu umgehen, besteht darin, Zeilen bedarfsweise abzurufen, eine Zeile nach der anderen, wenn die JTable jede Zeile rendert, und TableModel.getValueAt() aufruft; bei Bedarf zwischenspeichern. Dies führt allerdings zu vielen Zugriffen auf die Datenbank.
Gibt es einen Weg, um auf Scroll/Viewport-Ereignisse für eine JTable zu hören, um herauszufinden, welche Zeilen sie anzeigt, bevor sie jede Zelle rendert? Wenn ja, möchte ich eingreifen und mein benutzerdefiniertes TableModel dazu veranlassen, jeweils eine Seite im Voraus zu prefetchen.
Bearbeitung: nur um es klarzustellen, es geht darum, den Inhalt einer Gruppe von sichtbaren Tabellenzeilen in einem Batch abzurufen, anstatt den Inhalt jeder Zeile einzeln abzurufen.