IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

[awt.Color] Faire clignoter une couleur


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 6
    Par défaut [awt.Color] Faire clignoter une couleur
    Salut a tous!

    Je suis en train de developper une IHM avec AWT et Swing et j'aurai besoin d'aide concernant le clignotement des couleurs.

    J'ai cree differentes classes de symbole qui construisent des Graphics2D avec plusieurs couleur possible pour chaque suivant leurs etats.

    Dans certain cas il est necessaire d'afficher le symbole avec une couleur clignotante. Il est possible de creer des couleurs clignotante facilement?
    Par exemple sans passer par un Thread qui alterne mon symbole rempli en bleu puis en blanc et vis-versa...

    Merci d'avance!

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Utilises un Timer

  3. #3
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Bonjour, j'avais déja posté une classe qui fait à peu prêt ce que tu veux. Je pense que tu peux t'en inspirer :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    import java.awt.Color;
    import java.util.Timer;
    import java.util.TimerTask;
     
    import javax.swing.JPanel;
    public class MonClignoteur extends Timer {
        private static final int PERIODE = 1000;
     
        private JPanel _panel;
        private boolean _greyPanel = false;
        public MonClignoteur(JPanel panel) {
            super("MonClignoteur");
            _panel = panel;
        }
     
        public void start() {
            schedule(new MyTask(), 0, PERIODE);
        }
     
        private class MyTask extends TimerTask {
            public void run() {
                //changer la couleur du panel
                if(!_greyPanel){
                    _panel.setBackground(Color.GRAY);
                    _greyPanel = true;
                }
                else {
                    _panel.setBackground(Color.RED);
                    _greyPanel = false;
                }
            }
        }
    }

  4. #4
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 6
    Par défaut
    sinok parle du javax.swing.Timer et CheryBen du java.util.Timer qui ne sont pas les meme!
    J'ai l'impression que le premier est plus adapte dans mon cas non?

    @CheryBen : J'ai essaye d'implementer ton code en remplacant le JPanel par ma couleur a faire clignoter :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    import java.awt.Color;
     
    import java.util.Timer;
    import java.util.TimerTask;
     
    public class HMIBlinker extends Timer {
     
        private static final int delay = 500;
        private boolean test = false;
        private Color blinkingColor;
        private Color saveInput;
     
        public HMIBlinker(Color colorInput){
            super();
            blinkingColor = colorInput;
            saveInput = colorInput;
        }
     
        public void start() {
            schedule(new Task(), 0, delay);
        }
     
        private class Task extends TimerTask {
            public void run() {
                if(!test){
                    blinkingColor = Color.black;
                    test = true;
                }
                else {
                    blinkingColor = saveInput;
                    test = false;
                }                
            }
        }
    }
    Qu'en penses tu? Je l'ai teste mais aucun clignotement...

  5. #5
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Bah il faudrait peut être demander le repaint du composant dans lequel tu dessine le symbole que tu veux faire clignoter à chaque fois que tu changes de couleur.

  6. #6
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Oui ; cependant pour des questions d'optimisation, nottament si son rendu est long ou lourd, mieux vaudrait qu'il demande uniquement le repaint() de la zone correspondant au symbole. De meme il lui faudra modifier son rendu pour faire des calculs d'intersection avec la zone de clip (getClip()) du Graphics de maniere a ce que cette optmisation soit effective (ces calculs sont simplifies par les methodes de l'interface Shape).
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. faire clignoter la couleur d'une cellule
    Par zangaloni dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 10/12/2019, 11h55
  2. Faire clignoter une couleur dans Tedit
    Par redoran dans le forum Composants VCL
    Réponses: 11
    Dernier message: 07/09/2010, 15h59
  3. Réponses: 8
    Dernier message: 07/02/2006, 18h31
  4. Réponses: 2
    Dernier message: 13/12/2004, 15h16
  5. Réponses: 9
    Dernier message: 09/11/2004, 11h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo