Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pas de déplacement d'un curseur

1 réponse
Avatar
Yliur
Bonjour

J'utilise JSlider dans une fen=EAtre. Quand on clique =E0 c=F4t=E9 du curse=
ur
(=E0 gauche ou =E0 droite), le curseur est d=E9cal=E9 de 1.

J'aimerais modifier la valeur du d=E9calage. D'apr=E8s la javadoc,
setExtent devrait permettre de faire =E7a (?), mais =E7a ne fonctionne pas
(le d=E9calage est toujours de 1).

Des suggestions ?

Yliur

1 réponse

Avatar
Yliur
Le Tue, 4 May 2010 06:48:49 +0200
Yliur a écrit :


Bonjour

J'utilise JSlider dans une fenêtre. Quand on clique à côté du cur seur
(à gauche ou à droite), le curseur est décalé de 1.

J'aimerais modifier la valeur du décalage. D'après la javadoc,
setExtent devrait permettre de faire ça (?), mais ça ne fonctionne pas
(le décalage est toujours de 1).

Des suggestions ?

Yliur




Une solution...

Ce n'est pas le composant JSlider qui gère ça, mais l'objet chargé de
le représenter. Pour pouvoir appliquer plusieurs thèmes graphiques
différents sur un même composant (Métal, Motif, ...), Java sépare l es
deux aspects en deux objets. La classe chargée du rendu d'un objet
JSlider dans le thème Métal est MetalSliderUI. Il est possible de cré er
une classe qui hérite de MetalSliderUI (pour conserver l'apparence de
l'objet et l'essentiel de son comportement) et d'associer cette classe
de rendu à la glissière.

JSlider glissiere = new JSlider (...) ;
glissiere.setUI (new MaClasseDeRenduHeritantDeMetalSliderUI()) ;

Dans cette classe héritée de MetalSliderUI, il faut modifier la métho de
scrollDueToClickInTrack, qui est appelée quand on clique à côté du
curseur. Cette méthode doit simplement appeler scrollByBlock plutôt que
scrollByUnit (voir le code source de la méthode héritée).

Voilà, c'est à peu près ça.