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 :

Background de JPanel récalcitrant


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 294
    Par défaut Background de JPanel récalcitrant
    Bonjour

    Je fais actuellement une application utilisée par les hommes pour les hommes.
    J'ai donc besoin que le fond de l'application soit rose.
    Je tente désespérément de mettre le background du fils d'un JPanel à rose mais j'échoue lamentablement.

    Voici un bout de mon code:
    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
    class Panneau extends JPanel
    {
        Boolean autorisation;
     
        Panneau ()
        {
         autorisation=true;
        }
     
        public void paintComponent(Graphics g)
        {
                    setBackground(null);        
                    if (autorisation)
                         setBackground(Color.pink);
                    g.clearRect(0,0,30000,15000);
        }
    }

    Quelqu'un a-t-il une solution pour que le fond soit enfin rose ?


    Merci de votre attention

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 18
    Par défaut
    Est-ce qu'un simple setBackground(Color.pink) ne fonctionne pas si tu le mets dans le constructeur de ton JPanel ? (sans surcharger paintComponent)

  3. #3
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 294
    Par défaut
    J'ai essayé. Aucun résultat. Il reste fidèle à lui-même. Aucun rose à l'horizon. Une autre idée ?

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    setBackground(Color.pink) fonctionne parfaitement lorsqu'on ne redéfini pas la méthode paintComponent() ! Si tu redéfinis cette méthode tu dois le faire proprement, c'est à dire en utilisant les couleurs de background/foreground pour le dessin...

    Mais j'ai du mal à voir l'intérêt de redéfinir paintComponent() dans ton cas, et je ne trouve pas très propre le fait de changer la couleur de fond pendant le dessin

    a++

  5. #5
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 294
    Par défaut
    Merci de t'intéresser à mon problème.

    Alors. J'ai un JPanel dans lequel je dessine. Quand le composant se redessine, je redessine donc, à même le composant. La couleur du fond me va bien par défaut. Mais quand l'utilisateur est un homme, il faut que le fond soit rose.

    Il me semblait plus naturel d'effacer avec un clear() mais j'ai suivi ton conseil et maintenant, je repeins par dessus. On n'est pas dans le bâtiment

    Le résultat me convient.

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Si tu dessines toi même il faut définir les couleurs de dessin manuellement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    g.setColor(getForeground());
    g.setBackground(getBackground());
     
    g.clearRect(0,0,30000,15000);
    Sinon tu utilises celles par défaut du graphics, dépendant du système (noir/blanc ou noir/gris en général).

    a++

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

Discussions similaires

  1. Mettre une image en Background d'un JPanel et d'une JList
    Par diabli73 dans le forum Composants
    Réponses: 8
    Dernier message: 29/01/2010, 15h35
  2. [JPanel] background image
    Par benderSobre dans le forum Agents de placement/Fenêtres
    Réponses: 9
    Dernier message: 02/07/2008, 21h12
  3. JDialog qui prend le background de mon JPanel
    Par LoLoLem dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 10/12/2007, 11h09
  4. [débutant] image de background pour un JPanel
    Par thiouwz dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 06/11/2006, 15h49
  5. Changer le background (image) d'un JPanel
    Par citizenM dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 30/05/2006, 00h49

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