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

 Java Discussion :

récupération attribut dans des classes différentes


Sujet :

Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 115
    Points : 62
    Points
    62
    Par défaut récupération attribut dans des classes différentes
    bonjour, j'ai un problème pour récupérer la couleur d'un bouton d'une autre classe,
    j'ai deux classe PanelDessin et PanelOption
    je voudrais récupérer la couleur d'un bouton situé dans la classe PanelOption et
    dessiner avec cette même couleur dans PanelDessin

    voici le code dans PanelOption:
    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
        {
            // ....
            JButton rouge=new JButton("ROUGE");
            JButton orange=new JButton("ORANGE");
            rouge.setForeground(Color.red);
            orange.setForeground(Color.orange);
     
            rouge.addActionListener(this);
            orange.addActionListener(this);
     
            public void actionPerformed(ActionEvent e) 
            {
                  String s = e.getActionCommand();
     
                  if (s.equals("ROUGE")) 
                  {
                       panelDessin.setPaintColor(rouge.getBackground());
                  } 
     
                  if(s.equals("ORANGE")) 
                  { 
                       panelDessin.setPaintColor(orange.getBackground());
                  } 
            }
     
        // ....
        }
    voici le code dans PanelDessin:
    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
    {//...
       public Color setPaintColor(final Color color) 
       {
            return color;
        }
        public void paintComponent(Graphics g)
        {   
            if(!mode_dessin)
        {
              dessinerFond(g);
            }
        else if(mode_dessin)
        {
              g.setColor( Color.black );
              g.setColor(setPaintColor(color));
        } 
      //....
    }

  2. #2
    Membre expérimenté Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Points : 1 540
    Points
    1 540
    Par défaut
    Normalement panelDessin et panelOption doivent avoir une autre classe en commun : frame
    donc il suffit de faire un frame.getCouleurDuPanelOption();
    Ou alors tu passe par le pattern observer. Mais là sait un poil plus compliqué

    Ou alors tu crée une classe à part qui gère les évènement. Et qui s'occupe de les exécuter. Elle doit bien sur posséder toutes les instances des panels en cours.

    Bref, pas mal de façon de régler le problème. Donne nous un peu plus d'information pour qu'on puisse te dire quel méthode à utiliser

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 115
    Points : 62
    Points
    62
    Par défaut
    en fait PanelOption est définie comme cela :
    public class PanelOption extends JPanel implements ActionListener

    et PanelDessin est définie comme cela :
    publicPanelDessin extends JPanel implements MouseMotionListener,MouseListener

    la classe Principale est définie comme cela:
    public class Application extends JFrame

    je rajoute PanelDessin et PanelOption dans Application comme cela:
    // private PanelDessin panelDessin; private PanelOption panelOption;

    getContentPane().add(panelDessin);
    getContentPane().add(panelOption);

  4. #4
    Membre expérimenté Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Points : 1 540
    Points
    1 540
    Par défaut
    La manière la plus simple est de passer l'instance de panelDessin au constructeur de panelOption
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PanelDessin panelDessin = new PanelDessin();
    PanelOption panelOption = new PanelOption(panelDessin);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private PanelDessin panelDessin;
    //Constructeur de PanelOption
    public PanelOption(PanelDessin panelDessin){
    this.panelDessin= panelDessin;
    //...
    //Le reste de ton code
    Par contre ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public Color setPaintColor(final Color color) 
       {
            return color;
        }
    Je ne comprend pas, mais vraiment pas l'utilité
    Tu retourne la couleur passé en paramètre...
    limite tu peux faire un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void setPaintColor( Color color) 
       {
            this.color = color;
        }
    ça parait plus logique

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 115
    Points : 62
    Points
    62
    Par défaut
    mon problème est résolu, j'ai initialisé la couleur à noir dans panelDessin et j'ai fais comme cela dans cette même classe
    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
     
        public void setPaintColor( Color color) 
        {
            this.color = color;
        }
     
        public void paintComponent(Graphics g)
        {   
            if(!mode_dessin)
        {
              dessinerFond(g);
            }
        else if(mode_dessin)
        {
              setPaintColor(color); 
              g.setColor(color);
         }
    puis dans la classe PanelOption jai fais comme cela :
    //public PanelOption(PanelDessin panelDessin)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
        public void actionPerformed(ActionEvent e) 
        {
            String s = e.getActionCommand();
                   if(s.equals("ORANGE")) 
            { 
                panelGauche.setPaintColor(orange.getBackground());
            } 
            if(s.equals("ROSE")) 
            {
                panelGauche.setPaintColor(rose.getBackground());
            }
         }

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/06/2011, 16h04
  2. [XSLT] somme d'attributs dans des noeud différents
    Par ze_pat dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 14/12/2009, 13h58
  3. Réponses: 6
    Dernier message: 01/04/2007, 20h13
  4. [WSDL][Axis] Récupération de valeur dans des classes java
    Par cosmos38240 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 09/01/2006, 17h38
  5. Réponses: 2
    Dernier message: 27/03/2005, 16h09

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