Pas de déplacement d'un curseur

Le
Yliur
Bonjour

J'utilise JSlider dans une fenêtre. Quand on clique à côté du curse=
ur
(à 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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Yliur
Le #22114151
Le Tue, 4 May 2010 06:48:49 +0200
Yliur

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.
Publicité
Poster une réponse
Anonyme