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 :

Bouton colorant le background


Sujet :

AWT/Swing Java

  1. #1
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 4
    Par défaut Bouton colorant le background
    Bonjour à tous,

    je suis novice en JAVA, et je me suis interessé recemment sur les interfaces graphiques.
    J'essaie de construire une frame avec deux boutons, qui permettent de changer la couleur du background.
    Au final, la fenêtre s'affiche avec les boutons mais ne changent pas la couleur lors du clique.
    Après avoir lu plusieurs tutos, je ne vois toujours pas d'où vient le problème. J'aurai donc besoin de vos lumières pour m'éclaircir sur ce sujet si possible.
    Je vous remercie d'avance.

    Voici mon code:

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;

    public class Fenetre extends JFrame implements ActionListener{

    public static void main(String [] args){
    Fenetre MaFenetre= new Fenetre();
    MaFenetre.setVisible(true);
    }

    private JButton buttonVert;
    private JButton buttonRouge;
    private JLabel label;


    // Construction de la fenetre avec les deux bouttons

    public Fenetre(){
    super("Ma fenetre Couleur");
    Container pane=this.getContentPane();
    pane.setBackground(Color.WHITE);

    this.label= new JLabel("Je change de couleur");
    pane.add(this.label,BorderLayout.NORTH);

    this.buttonVert=new JButton("Vert");
    this.buttonRouge=new JButton("Rouge");

    pane.add(this.buttonVert,BorderLayout.WEST);
    buttonVert.addActionListener(this);
    buttonVert.setActionCommand("action1");

    pane.add(this.buttonRouge,BorderLayout.EAST);
    buttonRouge.addActionListener(this);
    buttonRouge.setActionCommand("action2");

    this.setSize(400,300);
    this.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

    }

    public void actionPerformed(ActionEvent evt){
    if("action1".equals(evt.getActionCommand()))
    this.setBackground(Color.GREEN);
    else
    this.setBackground(Color.RED);


    }
    Cordialement,
    kenchu.

  2. #2
    Membre Expert Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Par défaut
    Je suis pas expert du tout en IHM JAVA mais il me semble que quand tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Container pane=this.getContentPane();
    pane.setBackground(Color.WHITE);
    tu colore en blanc le panel qui recouvre ta JFrame.
    Tu devrait peut être essayer de changer la couleur de ce panel plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public void actionPerformed(ActionEvent evt){
    if("action1".equals(evt.getActionCommand()))
    {
    Container pane=this.getContentPane();
    pane.setBackground(Color.GREEN);
    }
    else
    ....
     
     
    }
    En espérant t'aider

  3. #3
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 4
    Par défaut
    Merci guigui5931 d'avoir pris le temps de lire mon post.

    J'ai essayé plusieurs façons

    1- Sans le else : Ca marche, bien evidemment le deuxième bouton ne change pas la couleur

    public void actionPerformed(ActionEvent evt){
    if("action1".equals(evt.getActionCommand()))
    {
    Container pane=this.getContentPane();
    pane.setBackground(Color.GREEN);
    }
    2- Avec le else : ca ne marche pas, il y a une erreur " panel1 cannot be resolved ".

    public void actionPerformed(ActionEvent evt){
    if("action1".equals(evt.getActionCommand()))
    {Container panel1=this.getContentPane();
    panel1.setBackground(Color.GREEN);
    }
    else{
    panel1.setBackground(Color.RED);
    }
    3- Avec le else et en utilisant un autre panel : ca marche très bien.

    public void actionPerformed(ActionEvent evt){
    if("action1".equals(evt.getActionCommand()))
    {Container panel1=this.getContentPane();
    panel1.setBackground(Color.GREEN);
    }
    else{
    Container panel2=this.getContentPane();
    panel2.setBackground(Color.RED);
    }
    Par contre, je ne comprends pas pourquoi il faut utiliser un autre container/panel que celui d'origine pour changer la couleur du background.
    Au total il y a 3 containers/panels " pane, panel1, panel2" .

  4. #4
    Membre Expert Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Par défaut
    En fait il n'y a pas 3 panel différent il n'y en as qu'un. Je m'explique (ou du moins j'essaye). La JFrame A un objet JPanel que tu récupère en faisant this.getContentPane();
    Quand tu fait panel1=this.getContentPane(); tu donne à panel1 une référence vers le panel de ta JFrame. Donc tes pane, panel1, panel2 sont uniquement des références vers le panel de le JFrame.
    Pour ce qui est de ton point 2 il ne trouve pas panel1 car il n'est pas déclaré dans le même bloc il devrait être écris comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public void actionPerformed(ActionEvent evt){
    Container panel1=this.getContentPane();
    if("action1".equals(evt.getActionCommand()))
    {
    panel1.setBackground(Color.GREEN);
    }
    else{
    panel1.setBackground(Color.RED);
    }
    J'espère avoir été clair.

  5. #5
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 4
    Par défaut
    Tout à fait, ca marche très bien. J'ai du faire une mauvaise frappe, car j'ai eu une exception dans le main.

    Merci beaucoup pour ton aide guigui5931.

  6. #6
    Membre Expert Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Par défaut
    Dans ce cas n'oublie pas pas de cliquer sur le petit bouton en bas de la discussion.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 30/06/2010, 18h33
  2. Colorer le background d'une zone de liste
    Par gorjette dans le forum IHM
    Réponses: 3
    Dernier message: 09/06/2010, 09h10
  3. Boutons : disabled color background
    Par flzox dans le forum Windows Forms
    Réponses: 14
    Dernier message: 05/12/2008, 14h04
  4. Comment réaliser un bouton coloré avec glyph ?
    Par colorid dans le forum Composants VCL
    Réponses: 5
    Dernier message: 04/02/2008, 12h31
  5. les boutons et leur background
    Par namstou3 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 03/10/2007, 15h22

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