JSlider : Forcer une valeur
Bonjour à tous,
Je vous explique mon petit projet, sur une fenêtre je dois mettre 6 JSliders, qui ont pour valeur maximale globale 100.
En d'autres termes la valeur maxi de la somme de mes 6 sliders doit être 100.
J'arrive bien à effectuer le contrôle et donc à déterminer la valeur maxi lorsque l'utilisateur fait glisser le sliders, mais lorsque je fait un setValue pour remettre le curseur d'un slider sur sa valeur maximale, c'est là que je rencontre un problème.
J'avais tout d'abord fait un
Code:
jSlider1.setValue(maxi);
maxi étant la valeur maximale déterminée, mais il ne se passe rien graphiquement sur le slider, en revanche lorsque je fait un getValue() derrière je récupère bien maxi :roll:
J'ai ensuite essayer de faire :
Code:
1 2 3 4 5
| jSlider1.getModel().setRangeProperties(maxi,
jSlider1.getExtent(),
jSlider1.getMinimum(),
jSlider1.getMaximum(),
false); |
Mais même conclusion que précédemment
J'ai aussi essayé çà :
Code:
1 2 3 4 5
|
jSlider1.setValue(maxi);
jSlider1.invalidate();
jSlider1.validate();
jSlider1.repaint(); |
Toujours le même comportement :aie:
Puis en cherchant un peu sur le forum je suis tombé sur ce topic :
http://www.developpez.net/forums/sho...hlight=JSlider
Whaooo pile poil ce que je cherche :king:
Je met donc en place le code ce qui nous donne :
Code:
1 2 3 4 5 6 7 8
|
SwingUtilities.invokeLater(
new Runnable() {
public void run() {
jSlider1.setValue(value0);
}
}
); |
Ca marche très bien mais uniquement la première fois 8O
Les fois suivantes j'obtiens des comportements étrange et en règle générale le slider ne se repositionne pas.
Je me suis donc dit que c'était le invokeLater qui ne fonctionnait pas et j'ai essayé avec un invokeAndWait :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
try {
SwingUtilities.invokeAndWait(
new Runnable() {
public void run() {
jSlider1.setValue(value0);
}
});
} catch (Exception e) {
// TODO: handle exception
} |
mais j'ai une exception :
Citation:
Exception in thread "AWT-EventQueue-0" java.lang.Error: Cannot call invokeAndWait from the event dispatcher thread
Sachant que j'effectue ce contrôle sur un évènement stateChanged positionné sur les sliders.
Voilà si quelqu'un à une idée pour réussir d'une manière ou d'une autre à faire fonctionner ces 6 sliders ensemble je suis prenneur.
Merci d'avance à ceux qui répondront