Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1416 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Java] question sur le Timer de javax.swing

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Java] question sur le Timer de javax.swing

n°739352
Sylfurd
UUUURUTORAMAN §§
Posté le 26-05-2004 à 11:12:27  profilanswer
 

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
mood
Publicité
Posté le 26-05-2004 à 11:12:27  profilanswer
 

n°739538
nraynaud
lol
Posté le 26-05-2004 à 11:52:27  profilanswer
 

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
n°739599
Sylfurd
UUUURUTORAMAN §§
Posté le 26-05-2004 à 12:10:37  profilanswer
 

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
n°739694
nraynaud
lol
Posté le 26-05-2004 à 13:18:18  profilanswer
 

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
n°739786
Sylfurd
UUUURUTORAMAN §§
Posté le 26-05-2004 à 13:38:07  profilanswer
 

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]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Java] question sur le Timer de javax.swing

 

Sujets relatifs
Récupérer la vue d'un composant Swing[java] base de données et enregistrement
question heritage et appel de fonctions membres[Java 1.5] Probleme avec les types generiques
tubes en javajava 3D
[java] [Débutante]JinternalFrame et JOptionPanelancement automatique d'un prog java
java 3D et les transformations[java] Regex : je ne m'en sors pas :(
Plus de sujets relatifs à : [Java] question sur le Timer de javax.swing


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)