2010-07-06 6 views
4

Je vais avoir ce problème:Java Swing: en utilisant JList et défilement automatique JScrollPane

J'ai un JList (dans un JScrollPane) avec dire environ 1000 éléments, et les dimensions de ce JList ne permet évidemment pas montrer toutes les données Maintenant, j'ai ce JList dans un JScrollPane et j'en ai besoin quand je dis JList.setSelectedIndex(), le JScrollPane défile automatiquement, et montre cet élément sur cet index sur le JList.

Merci d'avance!

Répondre

6

Je crois que vous êtes à la recherche de la méthode suivante:

public void ensureIndexIsVisible(int index)

Fait défiler la liste dans une fenêtre englobante pour faire complètement la cellule spécifiée visible. Cela appelle scrollRectToVisible avec les limites de la cellule spécifiée. Pour que cette méthode fonctionne, le JList doit être dans un JViewport. Si l'index donné est en dehors de la plage de cellules de la liste, cette méthode ne donne rien.

+0

Merci beaucoup! ça a marché comme j'avais besoin! –

1

Je n'ai pas testé, mais vous devriez être en mesure d'utiliser

myScrollPane.getViewport().scrollRectToVisible(Rectangle r) 

où r est une zone de votre superficie totale de l » JList de (virtuel) qui contient les informations d'intérêt. Vous pouvez calculer le décalage vertical requis à partir de la hauteur de l'élément JList et du numéro de ligne.


EDIT: La réponse de syntaxe est encore plus facile à implémenter.

+0

+1 En effet, 'JList' utilise' scrollRectToVisible() 'pour implémenter' ensureIndexIsVisible() '. – trashgod

Questions connexes