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
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part jSlider1.setValue(maxi);
J'ai ensuite essayer de faire :
Mais même conclusion que précédemment
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 jSlider1.getModel().setRangeProperties(maxi, jSlider1.getExtent(), jSlider1.getMinimum(), jSlider1.getMaximum(), false);
J'ai aussi essayé çà :
Toujours le même comportement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 jSlider1.setValue(maxi); jSlider1.invalidate(); jSlider1.validate(); jSlider1.repaint();
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
Je met donc en place le code ce qui nous donne :
Ca marche très bien mais uniquement la première fois
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SwingUtilities.invokeLater( new Runnable() { public void run() { jSlider1.setValue(value0); } } );
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 :
mais j'ai une exception :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 }
Sachant que j'effectue ce contrôle sur un évènement stateChanged positionné sur les sliders.Exception in thread "AWT-EventQueue-0" java.lang.Error: Cannot call invokeAndWait from the event dispatcher thread
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
Partager