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

  FORUM HardWare.fr
  Programmation
  Java

  Comment faire clignoter des éléments graphiques ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment faire clignoter des éléments graphiques ?

n°230637
ayachi
Posté le 19-10-2002 à 01:12:23  profilanswer
 

Je dois coder quelques éléments graphiques qui doivent clignoter,
par exemple une ligne qui change périodiquement toutes les 1/2 secondes de couleur, et j'y arrive pas.
C'est urgent, si qq'un a une solution, il me rendrait un grand service. Même un bout de code serait suffisant.
Merci :)
J'i essayé en faisant un thread qui gère le dessin et qui fait des changements de couleurs puis des sleep mais j'y arrive pas.

mood
Publicité
Posté le 19-10-2002 à 01:12:23  profilanswer
 

n°230810
gfive
Posté le 19-10-2002 à 15:45:43  profilanswer
 

c'est pourtant comme ça qu'il faut faire....j'ai fait comme ça, et ça marche, en gros :
   

Code :
  1. class MonComposant extends Canvas implements Runnable {
  2. ....
  3. thread t;
  4. public boolean draw= true;
  5. ...
  6. public void paint(Graphics g) {
  7.    if (draw) {
  8.       // Le code pour dessiner ton composant ici
  9.     } else {
  10.       g.fillRect(0, 0, getSize().width, getSize().height);
  11.     }
  12. }
  13. public void run() {
  14.     while (alive) {
  15.        draw != draw;
  16.        paint(getGraphics());
  17.        try {
  18.            thread.sleep(timeout);
  19.        } catch (InterruptedException e) {
  20.        }
  21.     }
  22. }

 
 
Bon, je suis pas sûr de moi, pasque j'ai pas mon code sous la main, mais bon, c'est qqchose dans ce goût là....Si ça marche pas, maile moi : je t'enverrai du code qui marche lundi....

n°231163
Gonzoide
Les cochons... dans l'espâââce
Posté le 20-10-2002 à 13:44:06  profilanswer
 

ou alors tu peux faire plus propre en implementant plusieurs renderers par composant, et gerer le clignotement (donc le changement de renderer) par un javax.swing.Timer. Ca te permettrait de ne pas appeler explicitement de Thread, etde ne pas d'embeter avec des synchros eventuelles (le Timer fonctionne dans le DispatchingThread). En plus si t'as plusieurs composants ils clignoteront de maniere coordonnee.


Message édité par Gonzoide le 20-10-2002 à 13:44:30
n°231511
gfive
Posté le 20-10-2002 à 22:29:00  profilanswer
 

Gonzo : chuis en AWT, moi! bouhou..alors je donne des solutions en AWT! :D

n°231623
gfive
Posté le 21-10-2002 à 09:36:53  profilanswer
 

Alors, un bouton qui affiche une image et qui clignote, en AWT :
(en fait, il peut aussi 'clignoter' entre 2 images)  
 
 
:  
 

Code :
  1. package atchik.util.gwidgets.alert;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. import java.util.*;
  5. public class BlinkingImageButton extends BlinkingButton implements Runnable, BlinkingComponent, MouseListener {
  6.     private Vector listeners; 
  7.     private Image imgOn;
  8.     private Image imgOff;
  9.     private String actionCommand;
  10.    
  11.     private Point onOrigin;
  12.     private Point offOrigin;
  13.     private boolean enabled;
  14.    
  15.     public BlinkingImageButton(Image imageOn, Image imageOff, Dimension d) {
  16. this.imgOn = imageOn;
  17. this.imgOff = imageOff;
  18. this.addMouseListener(this);
  19. this.enabled = true;
  20. onOrigin = null;
  21. offOrigin = null;
  22. setCursor(new Cursor(Cursor.HAND_CURSOR));
  23. listeners = new Vector();
  24. setSize(d);
  25.     }
  26.    
  27.     public void setEnabled(boolean enabled) {
  28. this.enabled = enabled;
  29. if (enabled) {
  30.     setCursor(new Cursor(Cursor.HAND_CURSOR));
  31. } else {
  32.     setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
  33. }
  34.     }
  35.    
  36.     public void addActionListener(ActionListener l) {
  37. listeners.addElement(l);
  38.     } 
  39.    
  40.     public void removeActionListener(ActionListener l) {
  41. listeners.remove(l);
  42.     } 
  43.    
  44.     /** Called when the button is clicked */
  45.     public void buttonClicked() {
  46. if (enabled) {
  47.     for (int i = 0; i < listeners.size(); i++) {
  48.  ((ActionListener)listeners.elementAt(i)).actionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, actionCommand));
  49.     }
  50. }
  51.     }
  52.    
  53.     public void setActionCommand(String s) {
  54. actionCommand = s;
  55.     }
  56.    
  57.     public String getActionCommand() {
  58. return actionCommand;
  59.     }
  60.    
  61.     public void paint(Graphics g) {
  62. g.setColor(getBackground());
  63. g.fillRect(0, 0, getSize().width, getSize().height);
  64. if (imgOn != null) {
  65.     if (onOrigin == null) {
  66.  onOrigin = new Point(1 + ((getSize().width -  imgOn.getWidth(this)) / 2),
  67.         1 + ((getSize().height -  imgOn.getHeight(this)) / 2));
  68.     } else {
  69.  onOrigin = new Point(0, 0);
  70.     }
  71. }
  72. if (imgOff != null) {
  73.     if (offOrigin == null) {
  74.  offOrigin = new Point(1 + ((getSize().width -  imgOff.getWidth(this)) / 2),
  75.          1 + ((getSize().height -  imgOff.getHeight(this)) / 2));
  76.     } else {
  77.  offOrigin = new Point(0, 0);
  78.     }
  79. }
  80. if (on) {
  81.     if (imgOn != null) {
  82.  g.drawImage(imgOn, onOrigin.x, onOrigin.y, getBackground(), this);
  83.     }
  84. } else {
  85.     if (imgOff != null) {
  86.  g.drawImage(imgOff, offOrigin.x, offOrigin.y, getBackground(), this);
  87.     }     
  88. }
  89.     }
  90.    
  91.    
  92.     public void mouseClicked(MouseEvent e) {
  93. buttonClicked();
  94.     }
  95.    
  96.     public void mouseEntered(MouseEvent e) {
  97.     }
  98.     public void mouseExited(MouseEvent e) {
  99.     }
  100.     public void mousePressed(MouseEvent e) {
  101.     }
  102.     public void mouseReleased(MouseEvent e) {
  103.     }
  104. }

n°231972
ayachi
Posté le 21-10-2002 à 18:44:18  profilanswer
 

Merci beaucoup :)

n°232072
Gonzoide
Les cochons... dans l'espâââce
Posté le 21-10-2002 à 21:26:41  profilanswer
 

gfive a écrit a écrit :

Gonzo : chuis en AWT, moi! bouhou..alors je donne des solutions en AWT! :D




JDK 1.4 rulez :sol:


Message édité par Gonzoide le 21-10-2002 à 21:27:14

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

  Comment faire clignoter des éléments graphiques ?

 

Sujets relatifs
Erreur dans les applis graphiques[ASP] - graphiques dynamiques
[C++] Nombre d'éléments d'un tableau dynamique ???[CSS] Proprietes de certains elements [REGLE]
PHP - Additionner les éléments d'un tableauJComboBox ajout d'éléments
[HTML/JS] Contrôle des éléments d'un formulaire[VB6] ListView : ajouter des elements dans les SubItems
recherche divers contrôles graphiques pr IHM sous VB[C++] Truc bête : nb d'éléments d'un enum
Plus de sujets relatifs à : Comment faire clignoter des éléments graphiques ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR