Bonsoir,
Question intéressante au contraire. Cela m'a étonné qu'on ne puisse pas paramétrer cette valeur. J'ai donc cherché un peu ...
Déjà la raison pour laquelle la valeur est souvent de 10% (mais pas toujours, cela dépend en fait du L&F) se trouve dans la classe javax.swing.plaf.basic.BasicSliderUI :
1 2 3 4 5 6 7 8 9
|
/**
* This function is called when a mousePressed was detected in the track, not
* in the thumb. The default behavior is to scroll by block. You can
* override this method to stop it from scrolling or to add additional behavior.
*/
protected void scrollDueToClickInTrack( int dir ) {
scrollByBlock( dir );
} |
La méthode scrollByBlock() définit quand à elle une valeur de scroll égale à :
int blockIncrement = (slider.getMaximum() - slider.getMinimum()) / 10;
Comme indiqué dans la doc de la méthode scrollDueToClickInTrack(), il faut la redéfinir pour obtenir le comportement que tu souhaite. Ou alors redéfinir la méthode scrollByBlock().
Par exemple, javax.swing.plaf.metal.MetalSliderUI redéfini la méthode de la manière suivante :
1 2 3
| protected void scrollDueToClickInTrack( int dir ) {
scrollByUnit( dir );
} |
ce qui a pour effet qu'un clic ne déplace le slider que de 1 unité !
Au final, c'est quand même un peu compliqué de devoir redéfinir le UI, donc à toi de voir si cela t'es vraiment nécessaire d'avoir une valeur de 5 à chaque incrément ?
Partager