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

Interfaces Graphiques en Java Discussion :

couleur de fond d'une fenêtre


Sujet :

Interfaces Graphiques en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 95
    Par défaut couleur de fond d'une fenêtre
    Bonjour,

    j'avais une JFrame qui contient un JPanel. Dans ma JFrame un petit setBackground (new Color (150,150,150)); me permettait d'avoir le fond de ma fenêtre grise. J'ai mis ensuite mon JPanel au sud avec un bouton à l'interieur.... et ma couleur de fond à disparu!

    J'ai essayer de faire un setBackground ds mon JPanel, sur la fenetre depuis mon main.... rien n'y fait! elle n'est plus grise.


    Pourriez vous m'aidez svp? merci d'avance!

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 97
    Par défaut
    Dans ta méthode paintComponent() est ce que tu commences
    par cette ligne là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void paintComponent (Graphics g)
    {
      super.paintComponent (g);
      ...
    }

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 95
    Par défaut
    oui pourquoi? super appelle le constructeur de paintComponent et met une autre couleur? J'ai essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class Panneau extends JPanel{
     
     
        public void paintComponent(Graphics g){
            super.paintComponents(g);
            this.setBackground(new Color(200,200,200));
     
        }
    }
    sans succès

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 97
    Par défaut
    Le setBackground () tu le mets dans le constructeur ou
    dans une methode totoPerformed() dans laquelle tu fais
    un setBackground (color), puis tu appelles repaint ()....

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 95
    Par défaut
    si je rajoute le constructeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     public Panneau() {
            setBackground(new Color(10,200,200));
            repaint();
     
        }
    (je viens de me rendre compte qu'il n'y en avait même pas ds ma classe panneau), ça ne change rien.

    si j'ajoute

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    setBackground(new Color(10,200,200));
            repaint();
    dans le constructeur de ma fenêtre j'aurai pendant une fraction de seconde la couleur qui s'affiche, mais qui sera immédiatement effacé lorsque j'ajouterai mon Panneau au contentPane.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 97
    Par défaut
    Ce ne serait pas plutot dans le JPanel qu'il faut fixer
    la couleur de fonds dans ces cas ?


  7. #7
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 95
    Par défaut
    oui, c'est ce que j'avais fait, mais j'ai essayé aussi dans la fenêtre après coup, comme celane marchait pas.

    c'est mon constructeur suivant qui ne marche pas je pense
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      public Panneau() {
            setBackground(new Color(10,200,200));
            repaint();
     
        }
    j'ai tenté depuis ma fenetre de faire un panneau.setBackgroundColor(new color(10,200,200)); mais ça ne marche pas mieux.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 97
    Par défaut
    Le repaint() tu n'as pas besoin de l'appeler dans le constructeur...
    En fait le repaint() est utilisé dans les procedures d'evements... après
    que l'objet a été affiché....


  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 97
    Par défaut
    Voila un bout de code qui change la couleur
    de fond

    import java.io.InputStream;
    import java.io.IOException;
    import java.util.Properties;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.Color;
    import java.awt.Container;
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    //import java.awt.GraphicsConfiguration;
    //import java.awt.GraphicsDevice;
    //import java.awt.GraphicsEnvironment;
    //import java.awt.Rectangle;
    import java.awt.Toolkit;

    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JButton;

    public class SimpleButton
    {
    public static void main (String[] args)
    {
    MyApplication app = new MyApplication ();
    app.setVisible (true);
    }
    }

    class MyApplication extends JFrame
    {
    public MyApplication ()
    {
    Toolkit tk = Toolkit.getDefaultToolkit ();
    Dimension d = tk.getScreenSize();
    int screenHeight = d.height;
    int screenWidth = d.width;

    setTitle ("Simple Button");
    setSize (screenWidth/3, screenHeight/3);
    setLocationRelativeTo (null);
    setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

    Container container = getContentPane ();
    container.add (new ButtonPanel ());
    }

    private static final long serialVersionUID = 0;
    }

    class ButtonPanel extends JPanel
    implements
    ActionListener
    {
    public ButtonPanel ()
    {
    InputStream inputStream = ButtonPanel.class.getResourceAsStream ("Buttons.properties");
    Properties props = new Properties ();
    try
    {
    props.load (inputStream);
    }
    catch (IOException ex)
    {
    ex.printStackTrace ();
    }

    setBackground (Color.lightGray);

    firstButton = new JButton (props.getProperty ("button.first"));
    firstButton.setActionCommand ("command1");
    firstButton.addActionListener (this);

    secondButton = new JButton (props.getProperty ("button.second"));
    secondButton.setActionCommand ("command2");
    secondButton.addActionListener (this);

    add (firstButton);
    add (secondButton);
    }

    public void paintComponent (Graphics g)
    {
    super.paintComponent (g);
    Graphics2D g2 = (Graphics2D) g;

    if ("command1".equals (lastCommand))
    {
    setBackground (Color.blue);
    }

    if ("command2".equals (lastCommand))
    {
    setBackground (Color.orange);
    }
    }

    public void actionPerformed (ActionEvent evt)
    {
    Object source = evt.getSource();
    if (source == firstButton)
    {
    System.out.println ("first button");
    }
    else if (source == secondButton)
    {
    System.out.println ("second button");
    }
    else assert false : "unknown event source";

    String command = evt.getActionCommand ();
    lastCommand = command;
    System.out.println (command);
    repaint ();
    }

    private JButton firstButton = null;
    private JButton secondButton = null;
    private String lastCommand = null;

    private static final long serialVersionUID = 0;
    }
    Au lieu de prendre les ressources dans un fichier
    properties, fixe les en dur dans le code si tu veux....

Discussions similaires

  1. Couleur du fonds d'une fenêtre
    Par ouinih dans le forum Windows Forms
    Réponses: 3
    Dernier message: 09/11/2010, 14h23
  2. TDBGRID - Couleur de fond d'une seule cellule
    Par cgo dans le forum Bases de données
    Réponses: 5
    Dernier message: 11/09/2009, 10h16
  3. Couleur de fond d'une fenêtre
    Par Jielde dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 08/06/2007, 21h57
  4. couleur de fond d'une fenêtre Dialog
    Par lermit dans le forum Qt
    Réponses: 4
    Dernier message: 25/05/2007, 09h53
  5. debutant : couleur de fond d'une application direct3D
    Par ptidrone dans le forum DirectX
    Réponses: 2
    Dernier message: 12/06/2004, 17h08

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