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

Composants Java Discussion :

[JButton] Faire clignoter un bouton ?


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut [JButton] Faire clignoter un bouton ?
    Bonjour,

    Je cherche à faire clignoter un bouton; par exemple que toutes les secondes, il change de couleur. Exemple : au départ le bouton est rouge, apres une seconde il passe au vert, apres une autre seconde il passe de nouveau à l'orange, etc...

    Pour le moment mon code pour colorier mes cellules donne ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cases[height_gagnant_1][width_gagnant_1].setBackground(java.awt.Color.red);
    Serait- il alors possible de le faire clignoter et si oui, comment ?

    merci d'avance de vos réponses

  2. #2
    Membre confirmé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2005
    Messages : 29
    Par défaut
    A part lancer un thread dédié a faire clignoter ton bouton, je ne vois pas.
    Dans awt et swing je n'ai pas trouvé d'event lié à une notion de temps.
    C.

  3. #3
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    Ce n'est pas bien compliqué en utilisant la classe javax.swing.Timer.
    Par exemple :
    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
    public class Blinker extends Timer implements ActionListener {
      JButton button;
      Color[] colors;
      int colorIndex;
     
      public Blinker(int delay, JButton button, Color[] colors) {
        super(delay, null);
        this.button = button;
        this.colors = colors;
        addActionListener(this);
      }
     
      public void actionPerformed(ActionEvent e) {
        button.setBackground(colors[colorIndex]);
        colorIndex = (colorIndex + 1) % colors.length;
      }
    }

  4. #4
    Membre émérite Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Par défaut
    sinon tu as toujours le choix d'allumer puis d'etteindre l'ecran... bon ok, je sors.

  5. #5
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Merci pour vos réponses

    herve91 ?

    Pour le code que tu m'as donné, pour que je l'intègre dans le mien, je dois faire une nouvelle classe à part ? Ou alors je dois l'intégrer comme ca dans ma classe d'interface graphique ?

    Je pourrais aussi employer la technique de benratti mais elle m'a l'air un peu primitive

  6. #6
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    ben à toi de voir
    Au choix, soit tu en fais une classe à part entière, soit tu en fais une classe interne (de préférence statique) dans ta classe d'interface graphique.
    N'oublie pas d'appeler la méthode start() sur l'instance du Blinker pour faire clignoter le bouton associé.

  7. #7
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    oula... ca se complique tout ca... je suis desolé mais je comprend pas comment je peut l'implémenter à mon code...

    J'ai mis ton code dans une nouvelle classe, et je pensais ensuite appeler ces fonctions depuis mon interface graphique c'est possible ?

    et aussi, je trouve pas ce qu'il faut importer pour employer le type color[]

    merci et desolé de toutes ces questions

  8. #8
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    euh, c'est une classe comme une autre, tout ce qu'il y a de plus normal quoi
    Tu ne peux pas appeler les "fonctions" comme ça directement, il te faut d'abord une instance de la classe (d'ailleurs on appelle ça des méthodes). Tu instancies donc un Blinker en lui passant le délai de clignotement, le bouton que tu veux faire clignoter, et un tableau de couleurs (Color c'est java.awt.Color). Le clignotement passe d'une couleur à une autre, cycliquement. Si tu veux faire clignoter entre deux couleurs, tu passes un tableau contenant deux couleurs, ou alors tu te crées un constructeur qui prend deux couleurs, à toi de voir selon ton besoin.

  9. #9
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    ok c'est gentil

    J'ai crée la nouvelle classe blinker mais quand je veut instancier il me dit que le constructeur blinker n'a pas été défini... On fait déja comment pour définir un constructeur ?

    et deuxième question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    button.setBackground(colors[colorIndex]);
    dans cette ligne de code, je vais faire changer la couleur en fonction des couleurs dans le tableau.... je dois remplir comment le tableau, car avant j'employais pour changer la couleur cette commande la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setBackground(java.awt.Color.red);
    je le remplis avec red blue... ou alors avec des couleurs RGB ou meme avec FFFFFFF ou 000000 ?

    merci

  10. #10
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    Citation Envoyé par wichtounet
    J'ai crée la nouvelle classe blinker mais quand je veut instancier il me dit que le constructeur blinker n'a pas été défini... On fait déja comment pour définir un constructeur ?
    Le constructeur défini à présent est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public Blinker(int delay, JButton button, Color[] colors)
    Citation Envoyé par wichtounet
    dans cette ligne de code, je vais faire changer la couleur en fonction des couleurs dans le tableau.... je dois remplir comment le tableau, car avant j'employais pour changer la couleur cette commande la :

    setBackground(java.awt.Color.red);
    Tu remplis un tableau de couleurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Color[] colors = new Color[] {java.awt.Color.red, java.awt.Color.blue};

  11. #11
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    oula, tu es trop rapide... j'allais supprimer mon message par un autre..

    merci beaucoup encore une fois pour tes réponses

    J'ai un nouveau problème maintenant. J'ai implémenté tout ca et ca me sort une série d'exceptions; alors je te donne tout le code concerné :

    le code de ma classe Blinker :

    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
     
    public class Blinker extends Timer implements ActionListener{ 
      JButton button1;
      JButton button2;
      JButton button3;
      JButton button4;
     
      Color[] colors;
      int colorIndex;
     
      public Blinker(int delay, JButton button1, JButton button2, JButton button3, JButton button4, Color[] colors) { 
        super(delay, null); 
        this.button1 = button1;
        this.button2 = button2; 
        this.button3 = button3; 
        this.button4 = button4; 
     
        //this.colors = colors; 
        addActionListener(this); 
     
        colorIndex = 0;
      } 
     
      public void actionPerformed(ActionEvent e) { 
    	button1.setBackground(colors[colorIndex]); 
    	button2.setBackground(colors[colorIndex]);
    	button3.setBackground(colors[colorIndex]);
    	button4.setBackground(colors[colorIndex]);
     
        colorIndex = (colorIndex + 1) % colors.length; 
      } 
    }
    ensuite le code ou je vais appeler ces fonctions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    								Color[] colors = new Color[2];
     
    								colors[0] = java.awt.Color.red;
    								colors[1] = java.awt.Color.red;
     
    								Blinker clignoteur = new Blinker(500 , cases[height_gagnant_1][width_gagnant_1] , cases[height_gagnant_2][width_gagnant_2] , cases[height_gagnant_3][width_gagnant_3] , cases[height_gagnant_4][width_gagnant_4] , colors);
     
    								clignoteur.start();
    Et pourquoi pas aussi la liste des exceptions qu'il me sort :

    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at Blinker.actionPerformed(Blinker.java:22)
    at javax.swing.Timer.fireActionPerformed(Unknown Source)
    at javax.swing.Timer$DoPostEvent.run(Unknown Source)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
    il me sort 4 fois ces exceptions

    voila si tu as encore besoin d'autres choses dis moi mais la je suis un peu perdu...

  12. #12
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    Ben vi tu as mis cette ligne en commentaire... étourdi non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //this.colors = colors;
    D'autre part, vu ces lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    colors[0] = java.awt.Color.red; 
    colors[1] = java.awt.Color.red;
    ça ne vas pas clignoter beaucoup, mets deux couleurs différentes

  13. #13
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    ohlalala

    je suis trop fatigué pour coder du java moi ^^

    merci beaucoup

    EDIT : apres essai ca marche tres bien

  14. #14
    Membre très actif

    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    402
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 402
    Par défaut le plus simple pour clignoter
    /*Bonjour à tous
    et merçi pour les heures de lecture qui me font gagner des heures de recherche.*/

    /* Bon
    je débute en java et je regardais votre code avec des yeux de merlan....
    ensuite je me suis résigné à ne pas faire clignoter, domage,
    et après avoir laissé reposer la pate un moment j'ai eu une idée :
    ET CA MARCHE
    Alors super fier je poste mon premier message en espérant que ça aide qq....
    (désolé si je ne respecte pas encore bien les règles.

    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
    /*je déclare deux couleurs au début de ma classe  juste avant mon Timer :*/
     
        Color couleur1 = new Color(255, 255, 20);
        Color couleur2 = new Color(120,150,255);
        private Timer monTimer= new Timer (500, new SupActionListener());
     
     
    // puis je démarre mon timer au niveau du jPanel qui contient mon objet 
        monTimer.start();
     
     // puis je déclare une nouvelle classe
     
    //**********************TIMER******************************************
        class SupActionListener implements ActionListener
        {
     
            public void actionPerformed (ActionEvent e)
            {
                Object source = e.getSource();
                if(source==monTimer) clignotant();
            }
            private void clignotant()
            {    
                Color Tmp = couleur1;
                couleur1=couleur2;
                couleur2=Tmp;
                jTextField1.setBackground(couleur1);//l'objet qui va clignoter...
            }
        }

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/11/2010, 16h27
  2. [XAML] Faire clignoter un bouton
    Par rickrax dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 28/09/2009, 17h46
  3. Faire clignoter un bouton
    Par Dryss51 dans le forum IHM
    Réponses: 5
    Dernier message: 01/08/2007, 15h20
  4. Faire clignoter un bouton avec Eclipse
    Par Marty McFly dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 24/04/2006, 03h03
  5. Faire clignoter un caractère
    Par gtr dans le forum x86 16-bits
    Réponses: 2
    Dernier message: 11/01/2003, 00h12

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