2009-05-13 4 views
0

J'ai trouvé un sample pour un JList trié, mais mon application est alimentée par une base de données H2 intégrée, donc je me demande s'il n'y a pas une meilleure façon de mettre en œuvre ceci dans cet esprit. En particulier, en considérant que la table en question pourrait devenir énormément grande, et la duplication de toutes ces données dans le modèle de liste d'un JList semble vaincre le point d'avoir une base de données pour le gérer.Problème Java: besoin d'un JList trié pour représenter une table de base de données

Existe-t-il un bon moyen de le faire? Ou suis-je obligé de concocter un bidouillage maladroit pour permettre au JList de "faire défiler" des morceaux de données dynamiquement interrogés ou quelque chose?

Répondre

2

Le numéro ListModel de votre JList est chargé d'exposer les données de support sous la forme d'une liste ordonnée. Les méthodes ListModel seront appelées par JList à partir du thread UI (AWT event), donc ses performances doivent être assez bonnes. C'est pourquoi la plupart des implémentations ont les données de sauvegarde ListModel en mémoire. Je suppose que vous pouvez mettre en œuvre ListModel avec votre base de données en tant que données de support. Vous allez probablement étendre AbstractListModel pour obtenir l'enregistrement de l'écouteur et implémenter getElementAt(int) et getSize(). getElementAt serait alors responsable de l'obtention de l'objet pour un index particulier. Gardez à l'esprit que JList appellera getElementAt plusieurs fois pour différents index, de sorte que vous pouvez vous retrouver en cache les résultats. En fonction de la quantité de données que vous mettez en cache, il se peut que vous récupériez tout l'ensemble de données à partir de la base de données.

Questions connexes