2009-06-16 5 views
4

Sur l'iPhone défilement des listes est animée en douceur. Ignorer l'effet d'inertie (bien que ce soit cool aussi) - comment est-ce que je pourrais créer une liste déroulante Swing en douceur comme ça?Comment faire défiler en douceur pour les listes dans Swing

Il existe également d'autres exemples, comme les navigateurs, mais ceux-ci utilisent des contrôles natifs que je ne peux pas utiliser avec Swing.

Répondre

4

Si vous utilisez JList, remplacez getScrollableUnitIncrement(Rectangle, int, int) et getScrollableBlockIncrement(Rectangle, int, int) pour renvoyer un incrément personnalisé, par ex. 2 pixels au lieu des valeurs par défaut calculées à partir de la hauteur d'entrée de la liste.

3

Je ne suis pas sûr que cela répond à votre question, mais j'ai eu un problème similaire. Mon problème était que le fait de faire glisser le bouton JScrollPane vertical faisait que JList défilait par blocs au lieu de par unités, c'est-à-dire que la cellule supérieure était toujours affichée en entier sauf lorsque la liste était défilée vers le bas.

Curieusement, cela ne s'est produit qu'avec l'aspect et la convivialité de Windows. En utilisant par défaut L & F j'ai obtenu le comportement que je voulais. Et après beaucoup creuser, j'ai trouvé this post qui a révélé qu'il y a L & propriété F pour cela. Par défaut, cela est vrai pour Windows L & F, mais vous pouvez le définir sur false comme ceci:

UIManager.put("List.lockToPositionOnScroll", Boolean.FALSE);