Bonjour à tous,
Tout d'abord je tiens à préciser que j'ai fait le tour des sujets semblables au mien sans toute fois y trouver le même problème que moi ou une solution qui pourrait y remédier.
Je vous l'explique en quelques mots, J'ai dans un actionListener d'un bouton un Thread qui permet à une fonction de tourner en boucle grâce à un while selon la valeur d'une variable boolean. Je voudrais que lorsque je reclic sur le même bouton, la variable qui fait tourner cette boucle while infini prennent la valeur false pour en arrêter l'exécution.
Je vous place le code de mon actionListener:
Il est possible que je n'utilise pas bien certains objets ou certaines fonctions, je ne suis qu'en deuxième année de Licence, tout conseil est le bienvenue ;)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 bouton1.addActionListener( event -> { boolean test2 = this.test; //On récupère la valeur initial du boolean Fenetre f = this; //On récupère l'objet sur lequel notre boucle "infini" va appeler la méthode (pas important dans le pb) Thread t1 = new Thread (new Runnable() { @Override public void run() { while(test2){ f.afficheFourmi(); } try{ Thread.sleep(10); }catch(InterruptedException e){ e.printStackTrace(); } } }); if(test2){ //Si la boucle n'est pas en cours d'exécution on lance le thread t1.start(); }else{ //Sinon on modifie la valeur du boolean test de la boucle infini (ce qui ne se fait pas) test2 = false; //Le problème est ici, je ne peux pas changer la valeur de cette variable, une erreur me demande de lui mettre un modificateur final afin qu'elle ne puisse plus être changée } } );
Merci bien !
Partager