Bonjour,
Je n'ai pas trouvé sur la doc Java comment interdire le retour en arrière d'un JSlider. Vous n'auriez pas une petit piste à m'indiquer ?
Version imprimable
Bonjour,
Je n'ai pas trouvé sur la doc Java comment interdire le retour en arrière d'un JSlider. Vous n'auriez pas une petit piste à m'indiquer ?
Vous n'avez pas d'idée ou je n'ai pas été assez claire ?
A vrai dire, comme c'est un composant qui sert à régler une valeur,Citation:
Je n'ai pas trouvé sur la doc Java
il n'est pas étonnant qu'il n'y ait pas de système de blocage.
Je suppose que seule la "marche en avant" est autorisée ?Citation:
comment interdire le retour en arrière d'un JSlider
Donc on ne peut pas seulement désactiver le composant.
Ce que tu peux essayer, c'est d'ajouter un évènement qui se déclenche quand la souris est relâchée (MouseReleased).
Si le jslider.getValue() est inférieur à sa valeur précédente alors on rétablit l'ancienne valeur.
champ de classe:
dans le constructeurCode:
1
2int anc; javax.swing.JSlider jSlider1;
ajout de l'évènement :Code:anc = jSlider1.getValue();
Code:
1
2
3
4
5
6
7
8
9 jSlider1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseReleased(java.awt.event.MouseEvent evt) { if (anc > jSlider1.getValue()) { jSlider1.setValue(anc); } else { anc = jSlider1.getValue(); } } });
Je n'avais pas pensé à ça. Je vais essayé.
Merci !
Bon en fait ça ne fait pas vraiment ce que j'aimerais... Ya vraiment pas moyen de bloquer le retour arrière ? ou alors je dois peut etre trouver directement un slider de ce type....
Il te faudra probablement réécrire l'UIDelegate (Classe héritant de SliderUI, en général héritant de BasicSliderUI) du JSlider car c'est cette classe qui possède le listener correspondant aux mouvements du Thumb.
Bref je te conseille de décompresser l'archive src.zip se trouvant à la racinde de ton JDK et d'aller t'instruire en lisant le code de la classe BasicSliderUI pour voir comment se déroule le procédé. Tout ce qui t'intéresse se passe dans la classe interne TrackListener.