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

 Java Discussion :

Changer la couleur d'un JLabel


Sujet :

Java

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 86
    Par défaut Changer la couleur d'un JLabel
    Bonjour,

    J'aimerai savoir si on peut changer la couleur d'un JLabel on cliquant sur un bouton.

    Ma fenêtre dispose d'un bouton et en dessous un JLabel et je veux que quand on clique sur le bouton le JLabel change de couleur.

    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private void changerActionPerformed(java.awt.event.ActionEvent evt) {                                        
          int c = (int) Math.floor(Math.random()*3);
          if(c == 0)
              this.jlabel.setBackground(Color.yellow);
          else if(c == 1)
              this.jlabel.setBackground(Color.BLACK);
          else if(c == 2)
              this.jlabel.setBackground(Color.GREEN);
    }
    Bien entendu avec ce code le JLabel ne change pas de couleur

    merci et à bientôt.

  2. #2
    Membre Expert
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Par défaut
    Bonjour,

    As-tu précisé que ton JLabel était opaque ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.jlabel.setOpaque(true);

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 86
    Par défaut
    bonjour,

    merci Nesmontou pour ta réponse. en effet, je n'ai pas précisé que mon JLabel était opaque et maintenant ça marche

    je suis maintenant face à un nouveau problème. c'est les même composants sauf que mon jlabel contient une image (gif) et il est pas visible au départ. je dois le rendre visible quand je clique sur le bouton et après la fin d'un traitement je dois le rendre invisible. voici un extrait de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private void changerActionPerformed(java.awt.event.ActionEvent evt) {                                        
             this.jLabel2.setVisible(true);
             //while(!arret)
             //traitement ...
             //...
             this.jLabel2.setVisible(false);
    }
    Si vous avez une idée SVP.

    merci à bientôt.

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    tu dois faire ton traitement dans un thread séparé.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 86
    Par défaut
    merci tchize pour ta réponse.

    étant donné que j'ai jamais utilisé de thread j'ai fait des recherche rapidement et je suis arrivé à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    private void changerActionPerformed(java.awt.event.ActionEvent evt) {                                        
             this.jLabel2.setVisible(true);
             Thread t = new Thread( {
             public void run(){
                     //while(!arret)
                     //traitement ...
                    //...
              }
              });
              t.start();
             this.jLabel2.setVisible(false);
    }
    mais la dernière ligne de mon code ne s'exécute pas! le jlabel reste visible. je ne comprend pas, si tu peux m'expliquer stp.

    merci à bientôt.

  6. #6
    Membre très actif
    Avatar de la.lune
    Homme Profil pro
    Directeur Technique
    Inscrit en
    Décembre 2010
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Comores

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

    Informations forums :
    Inscription : Décembre 2010
    Messages : 548
    Par défaut
    Déjà ce n'est pas comme ça si tu veux utiliser les Thread, ce code ne se devait pas se compiler même. Thread n'est pas une interface on ne peut pas implémenter une méthode de cette manière.

    Selon moi ce n'est pas les Thread la solution car dans ce cas ton code peut être comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
     this.jLabel2.setVisible(true);
             new Thread( new Runnable() {            
                @Override
                    public void run() {         
                    //while(!arret)
                     //traitement ...
                    //...
                    }
                } ).start();
                this.jLabel2.setVisible(false);
    Ou en classse interne au cas ou dans ton traitement tu aurais besoin de composant de ta classe.

    Ce qui va se passer est que ce programme peut rendre ton jLabel2 invisible avant que les traitements finissent. Et si tu fait un test devant cette dernière instruction (par exemple avec une variable boolean que tu mettra à jour dans tes traitements), ce test ne sera pas évaluer qu'une seul fois, sauf si tu met cette dernière instruction dans une boucle while,possible comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     while(!traitemenfini) this.jLabel2.setVisible(false);
    Ton problème est que ton traitement ne fini pas convenablement,peut être tu vois ce que tu veux mais possible qu'une boucle ne s'est pas arrêté. Il faut s'assurer que le traitement est fait et quitté aussi. C'est la solution et tu n'aura pas besoin de Thread.

  7. #7
    Membre très actif
    Avatar de la.lune
    Homme Profil pro
    Directeur Technique
    Inscrit en
    Décembre 2010
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Comores

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

    Informations forums :
    Inscription : Décembre 2010
    Messages : 548
    Par défaut
    Pour voir si un traitement n'est pas arrêté tu met des petit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     System.out.println("voir ce qui se passe")
    à l’intérieur de chaque boucle(s'il sont nombreux ) et regardes en sortie si tes affichages s’arrêtent ou pas.

  8. #8
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    utilisez la classe swingworker pour faire votre traitement dans un thread séparé (voir la faq java à ce sujet).

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 86
    Par défaut
    bonsoir,

    merci pour vos réponse

    j'ai testé les deux solutions proposées et j'ai gardé le swingworker car j'ai rajouté une barre de progression à mon programme.

    j'ai réussi à utiliser le swingworker en lisant se tutoriel.

    problème résolu et encore merci pour vos explications.

  10. #10
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    n'oublie pas le bouton

  11. #11
    Membre très actif
    Avatar de la.lune
    Homme Profil pro
    Directeur Technique
    Inscrit en
    Décembre 2010
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Comores

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

    Informations forums :
    Inscription : Décembre 2010
    Messages : 548
    Par défaut
    Merci tchize_ car je n'avais jamais utilisé de swingworker

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 21/01/2015, 15h24
  2. [JLabel] Changer la couleur de fond
    Par piotrr dans le forum Composants
    Réponses: 1
    Dernier message: 25/06/2008, 11h14
  3. [débutant] [JLabel] Changer la couleur de fond
    Par lejimi dans le forum Composants
    Réponses: 3
    Dernier message: 17/08/2005, 14h20
  4. Changer la couleur de fond de l'écran
    Par tnk dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 19/01/2003, 01h37
  5. Changer les couleurs de la palette avec du RGB
    Par le mage tophinus dans le forum x86 16-bits
    Réponses: 11
    Dernier message: 13/01/2003, 08h55

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