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 :

[JColorChooser] changement des couleurs de fond


Sujet :

AWT/Swing Java

  1. #1
    Membre actif
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Points : 268
    Points
    268
    Par défaut [JColorChooser] changement des couleurs de fond
    Bonjour,

    Je souhaite changer les couleurs de fond des "colors choosers" de mon JColorChooser.

    J'ai tenté:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    JColorChooser myJCC = new JColorChooser(Color.BLACK);
    AbstractColorChooserPanel[] panels = myJCC.getChooserPanels();
     
    for (int i=0; i<panels.length; i++) {
      panels[i].setBackground(Color.RED);
    }
    sans succès, ainsi que:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    JColorChooser myJCC = new JColorChooser(Color.BLACK);
     
    for (int i=0; i<myJCC.getComponentCount(); i++) {
      Component tmpComponent=myJCC.getComponent(i);
      if(tmpComponent!=null){
        tmpComponent.setBackground(Color.RED);
     } 
    }
    mais toujours rien!

    Le problème c'est que les AbstractColorChooserPanel en question ne sont pas accessibles et je ne peux donc pas faire de traitement au cas par cas.

    Si qq'un a une idée je suis preneur!

    merci!

  2. #2
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Bonjour,

    une solution serait de passer par l'UI. Si tu affiches un ColorChooser, puis listes toutes les entrées de l'UI, tu devrais avoir quelque chose comme ColorChooser.background. Quand tu as trouvé cette clé, il suffit de mettre la couleur voulue.

    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
    // trouver les clés en rapport avec le JColorChooser
    JColorChooser jcc = new JColorChooser();
    jcc.setVisible(true);
    // le ColorChooser est affiché => les paramètres UI ont été chargés par
    // la LazyMap. On cherche ceux qui sont intéressants
    for(Object key : UIManager.getDefaults().keySet)
      if(key.toString().toLowerCase().contains("background") ||
         key.toString().toLowerCase().contains("color"))
        System.out.println(key);
     
    // on va dire qu'on a trouvé "ColorChooser.background"
    // on remplace la valeur du LnF :
    UIManager.getDefaults().put("ColorChooser.background", Color.PINK);
    // on met à jour les composants si ils sont déjà affichés
    SwingUtilities.updateComponentTreeUI(jcc);

  3. #3
    Membre actif
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Points : 268
    Points
    268
    Par défaut
    merci pour l'info!

    Je creuse par là!

  4. #4
    Membre actif
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Points : 268
    Points
    268
    Par défaut
    Il existe effectivement un ColorChooser.background mais le positionner ne change pas le comportement.
    Techniquement le background du ColorChooser est bien modifié mais pas ceux des composants inclus dans celui-ci.
    Je ne sais pas si on peut atteindre spécifiquement ces composants (il me semble que le passage par l'UI généralise les modifications).

    J'ai réglé mon problème différement. En fait je ne souhaitais pas avoir une couleur spécifique pour le colorChooser, mais juste qu'il soit au diapason avec le reste de l'IHM.
    C'était donc une erreur que de traiter chaque composant au cas par cas alors qu'une simple redefinition du LnF à réglé mon problème en deux secondes.

    Je clos la discution car mon problème est réglé (même si ma question reste en suspens).

    En tout cas merci du coup de main!

  5. #5
    Membre actif
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Points : 268
    Points
    268
    Par défaut
    Pour ce qui est de la liste des ressources de l'UI, j'ai cherché dans mon bouquin sur swing (Java swing O'Reilly),
    mais si qq'un connait un lien je pense que ça peut en dépanner plus d'un!

    je connais celui là mais je ne suis pas sûr que ça soit durable:
    http://safari.oreilly.com/156592455X/SWING-AP-A-TABLE-2

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

Discussions similaires

  1. [Dojo] Changement de couleur de fond d'une ligne sur un datagrid
    Par Daniel_Gibot dans le forum Bibliothèques & Frameworks
    Réponses: 4
    Dernier message: 05/02/2010, 13h22
  2. Réponses: 3
    Dernier message: 16/05/2008, 17h42
  3. Changement du couleur de fond de mon Frame
    Par Siempre Adelante-> dans le forum wxWidgets
    Réponses: 0
    Dernier message: 06/01/2008, 14h41
  4. [VBA-E]Changement de couleur de fond de cellule avec si
    Par fmris dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/03/2007, 19h21
  5. changement des couleurs par appuis sur case à cocher
    Par Wormus dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/10/2005, 23h05

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