102 votes

Comment accélérer la vitesse de défilement dans un JScrollPane lorsque l'on utilise la molette de la souris ?

Je vois la méthode JScrollPane.setWheelScrollingEnabled(boolean) pour activer ou désactiver le défilement de la molette de la souris. Y a-t-il un moyen de régler la vitesse de défilement ? À mon avis, il est ridiculement lent. Quelle que soit la taille de la fenêtre, le défilement est d'environ trois pixels par clic. J'aimerais qu'il soit beaucoup plus rapide que cela.

Des idées ?

5 votes

Note : Pour ceux qui recherchent la version Java script équivalent de ceci, voir Accélérer la roue de la souris dans le jScrollPane (jQuery) .

206voto

Andrei Podoprîgora Points 2793

Vous pouvez essayer ceci :

myJScrollPane.getVerticalScrollBar().setUnitIncrement(16);

2 votes

Magnifique. J'ai également remarqué que cela affecte les flèches vers le haut et vers le bas dans la barre de défilement, ce qui est également très souhaitable.

1 votes

@AlizainPrasla - lors de l'initialisation de ce panneau de défilement.

0 votes

Comment faire pour que cela affecte également le fait de cliquer dans la zone située entre la boîte de défilement et les flèches vers le haut ou vers le bas de la barre de défilement ?

12voto

Jeff Points 1780

Une solution serait de définir l'incrément d'unité de la barre de défilement sur un nombre plus grand :

scrollPane.getVerticalScrollBar().setUnitIncrement(20);

10voto

camickr Points 137095

Si vous souhaitez définir la quantité de défilement de la molette de la souris indépendamment de l'unité de la barre de défilement, vous pouvez utiliser la fonction Contrôleur de la molette de la souris .

0 votes

Quel avantage cela offre-t-il pour que j'inclue une classe supplémentaire dans mon projet au lieu d'écrire une ligne de code ?

2 votes

@ErickRobertson, cela a juste été prévu pour vous donner plus de flexibilité. Par défaut, le défilement est égal à 3 fois la valeur de l'incrément unitaire. Par exemple, avec un JTable, l'incrément unitaire correspond par défaut à la hauteur de la ligne et le défilement par défaut sera donc de 3 lignes. Si, pour une raison quelconque, vous souhaitez faire défiler une page à la fois ou 5 lignes à la fois, vous pouvez le faire en manipulant simplement la valeur de l'unité. De plus, la hauteur de ligne par défaut peut être différente pour chaque LAF. En manipulant la quantité de défilement sur une base relative, vous obtenez un meilleur support multiplateforme.

0 votes

La valeur "3" (unités de défilement) provient du panneau de configuration du système, que Java honore, ce qui vous permet de la modifier dans tout le système.

9voto

Michael de Jong Points 71

Vous pouvez le faire en définissant l'incrément d'unité pour une ScrollBar. Voir l'exemple.

yourScrollPane.getVerticalScrollBar().setUnitIncrement(16);

2voto

casablanca Points 41814

Une recherche rapide a permis de trouver cette page : Comment augmenter la vitesse de défilement du JScrollPane pour les utilisateurs de la molette de la souris ? . Il s'avère que l'incrément de défilement est une propriété de la barre de défilement elle-même ( JScrollBar.setUnitIncrement ) et non le volet de défilement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X