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

Agents de placement/Fenêtres Java Discussion :

Probleme de modification de couleur de JFrame


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 14
    Points : 13
    Points
    13
    Par défaut Probleme de modification de couleur de JFrame
    Bonjour. je dois actuellement faire un agenda pour un projet et j'ai un JTabbedPane qui contient les RootPane des derivées de JFrame composant l'agenda.

    A chacune de ces JFrame est associé une couleur comme attribut de classe et j'ai un JFrame avec un JColorChooser qui devrait normalement me permetre de changer la couleur associé a chacun de ces JFrame.
    Tout se passe bien pour changer la valeur de l'attribut static mais rien ne change à l'affichage. J'ai essayer les methodes validate et revalidate sur leur RooPane et ContentPane mais ca na rien changé non plus.
    Si quelqu'un a une solution se serait sympa...

    Voici le code de la fenetre d'option :

    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 FenetreOption extends JFrame implements ChangeListener {
     
    	private static final long serialVersionUID = 1L;
    	private Color color;
    	private JColorChooser colorChooser;
    	private JFrame frame;
     
    	public FenetreOption(JFrame f){
    		super();
    		frame=f;
    		Container pane=this.getContentPane();
    		color=FenetreAgenda.getColor();/*il s'agit de la classe de frame*/
    		colorChooser=new JColorChooser(color);
    		colorChooser.getSelectionModel().addChangeListener(this);
     
    		pane.add(colorChooser,BorderLayout.NORTH);
     
     
    	}
     
    	public void stateChanged(ChangeEvent e) {
    	    Color newColor = colorChooser.getColor();
    	    FenetreAgenda.setColor(newColor);
    	    System.out.println(FenetreAgenda.getColor().toString());
    	    frame.getRootPane().revalidate();
    	    frame.getContentPane().validate();
     
    	}
     
     
    }
    Vous pouvez me le dire si je n'ai pas été assez clair

  2. #2
    Membre habitué Avatar de dr00w
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 116
    Points : 136
    Points
    136
    Par défaut
    Il faut que tu fasses setBackground(Color c) sur le composant en avant plan. Mais je ne suis pas certain de ce que tu fais : tu mets des JFrames dans le contentPane ??

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    En fait j'extrais les RootPane des JFrame pour les placé dans le JTabbedPane parce qu'a l'origine je n'avais pas prevu d'utiliser les onglets mais des boutons qui aurait permit de passer d'une fenetre à l'autre.
    Sinon au lieu de changer un par un les couleurs des composants sachant que tout les composants dont j'ai modifié la couleur ont la meme couleur attribut de la classe derivé de JFrame a laquelle elle appartiennent je voudrais juste pouvoir changer cette couleur et forcer la fenetre a se "reconstruire" en prennant en compte ce changement....

  4. #4
    Membre habitué Avatar de dr00w
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 116
    Points : 136
    Points
    136
    Par défaut
    Tu ne devrais pas jouer avec le rootpane. Fais toi des classes (ou utilise un Builder) qui étendent JPanel ou JComponent dans lesquels tu fixes ta couleur de fond, ajoutes les au JTabbedPane puis fais setContentPane(monTabbedPane). Si tu regardes la classe JRootPane dans la doc de sun tu vas comprendre pourquoi c'est pas une bonne idée.

    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
     
    public class MonPanel extends JPanel {
     
      Color couleurDeFond = null;
     
      public MonPanel(Color couleurDeFond) {
     
        setCouleurDeFond(couleurDeFond);
      }
     
      public setCouleurDeFond(Color c) {
        this.setBackground(c);
     }
     
    }

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    Bon je vais changer la couleur des elements un par un dans ce cas,
    il n'y a pas que le background en fait mais plein d'element dissiminer dans les panels qui ont tous la meme couleur.
    Sinon les JRootPane ne pose pas de probleme pour le moment mais je changerai les JFrame en JPanel quand j'aurrai le temps.
    Merci.

  6. #6
    Membre habitué Avatar de dr00w
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 116
    Points : 136
    Points
    136
    Par défaut
    Ben tu peux mettre le fond de tes objets transparent avec setOpaque(false) et alors la couleur de fond va passer.

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

Discussions similaires

  1. [Traitement d'image] Modification des couleur d'une image png
    Par lio33 dans le forum Webdesign & Ergonomie
    Réponses: 3
    Dernier message: 01/10/2006, 22h24
  2. Probleme struts modification
    Par kamaldev dans le forum Struts 1
    Réponses: 6
    Dernier message: 29/06/2006, 01h07
  3. Probleme de modification du nom d'un attribut
    Par kenny49 dans le forum Access
    Réponses: 4
    Dernier message: 23/06/2006, 14h23
  4. Affichage de fichier.txt et modification des couleurs
    Par Furius dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 04/12/2005, 17h33
  5. Réponses: 3
    Dernier message: 01/09/2005, 11h56

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