[Java] question sur le Timer de javax.swing

question sur le Timer de javax.swing [Java] - Java - Programmation

Marsh Posté le 26-05-2004 à 11:12:27    

Voila, je me demande si le Timer de javax.swing attends d'avoir terminé l'execution de son ActionEvent avant avant de déclencher le suivant...
 
sur java.sun.com je penses avoir trouvé un réponse, mais je ne suis pas sur d'avoir tout compris:

Citation :

Although all Timers perform their waiting using a single, shared thread (created by the first Timer object that executes), the action event handlers for Timers execute on another thread -- the event-dispatching thread. This means that the action handlers for Timers can safely perform operations on Swing components. However, it also means that the handlers must execute quickly to keep the GUI responsive.


 
Voila mon code:
 
en fait j'attends qu'il termine l'execution de l'actionEvent avant d'en continuer un autre grâce au booléen affTermine

Code :
  1. timer = new javax.swing.Timer(delay, new ActionListener() {
  2.  public void actionPerformed(ActionEvent evt) {
  3.      if (affTermine)
  4.   {
  5.       affTermine = false;
  6.         champ.MAJ();
  7.       for (int i=0; i < 500000; i++) // ça c pour le faire ramer un peu :)
  8.    {
  9.        repaint();
  10.    }
  11.       affTermine = true;
  12.   }
  13.  }
  14.     });
  15. timer.start();


 
Donc voila, ai-je besoin de reccourir à cette technique ou pas ?
Merci pour vos réponses :jap:


Message édité par Sylfurd le 26-05-2004 à 11:13:18
Reply

Marsh Posté le 26-05-2004 à 11:12:27   

Reply

Marsh Posté le 26-05-2004 à 11:52:27    

non non non non !
 
1) le timer de swing ne re-rentrera pas. Les autres actionEvent seront enfilés dans la file d'évènement et traités à la suite les uns des autres.
2) même s'il re-rentrait, repaint() ne re-rentrerait pas.
3) repaint ne repeint pas à chaque appel, des appels successifs seront condensés en un seul.
4) tes variables affTermine ne seraient pas vues par les autres tâches
 
Donc, pas de prise de tête, tu fait un repaint() tout simple


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 26-05-2004 à 12:10:37    

nraynaud a écrit :

non non non non !
 
1) le timer de swing ne re-rentrera pas. Les autres actionEvent seront enfilés dans la file d'évènement et traités à la suite les uns des autres.
2) même s'il re-rentrait, repaint() ne re-rentrerait pas.
3) repaint ne repeint pas à chaque appel, des appels successifs seront condensés en un seul.
4) tes variables affTermine ne seraient pas vues par les autres tâches
 
Donc, pas de prise de tête, tu fait un repaint() tout simple


 
Ok nickel, merci beaucoup, c'est ce à quoi je pensais... Il ne faut pas oublier que je n'est pas qu'un repaint() dans l'actionEvent, mais aussi un champ.MAJ(), mais d'après ton 1) ça ne poseras pas de probleme !  
 
Merci beaucoup !
Tu vois, tu n'es pas si con  :hello:  
(cf ta signature ;) )


Message édité par Sylfurd le 26-05-2004 à 12:10:56
Reply

Marsh Posté le 26-05-2004 à 13:18:18    

Sylfurd a écrit :

aussi un champ.MAJ()
 
Tu vois, tu n'es pas si con


1) gloups, j'avais pas vu ça. Si tu veux repeindre à cause de la mise à jour du champ, inutile (voire déconseillé, ça bouffe du temps inutilement), c'est automatique (y'a tout un système de communication entre le modèle et le composant graphique).
 
 
2) on fait ce qu'on peut quoi.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 26-05-2004 à 13:38:07    

nraynaud a écrit :

1) gloups, j'avais pas vu ça. Si tu veux repeindre à cause de la mise à jour du champ, inutile (voire déconseillé, ça bouffe du temps inutilement), c'est automatique (y'a tout un système de communication entre le modèle et le composant graphique).
 
 
2) on fait ce qu'on peut quoi.


 
Oui, en fait c'est un projet de Java que je dois finir pour le 3 juin pour ma 2eme année de MIAS ...
En fait c'est un "jeu de stratégie", et j'utilise donc des objets qui se déplacent ...
A chaque coup du Timer je redéplace les unités si yen a besoin, je créée la forme de l'objet suivant sa position et son angle (en fait on n'a pas vu de choses très évoluées en grafisme en java, alors j'utilise des polygone d'une 20aine de points pour chaque type d'unité) et je l'affiche dans le JPanel...
 
On n'a pas vu autrement [:spamafote]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed