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 :

passage de parametre


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 29
    Par défaut passage de parametre
    Bonjour,
    J'ai un problème de passage de parametre. J'ai fait une fenetre avec des JRadioButon et donc j'ai fait une écoute de ces radioboutons.
    Ensuite à l'appui sur le boutonS je met "parAff="S".

    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 Mafenetre extends JFrame implements ActionListener {
    public Mafenetre(String parAff, String formaAff) {
    //...
    RadioListener parametreListener = new RadioListener();
                boutonS.addItemListener(parametreListener);//boutonS.addItemListener(SListener);//créer une écoute du "boutonS"
                boutonY.addItemListener(parametreListener);
                boutonZ.addItemListener(parametreListener);
     
            RadioListener formatListener = new RadioListener();        
                boutonRe.addItemListener(formatListener);//créer une écoute du "boutonRe"
                boutonIm.addItemListener(formatListener);
                boutonMod.addItemListener(formatListener);
                boutonArg.addItemListener(formatListener);
                boutonDb.addItemListener(formatListener);
                boutonRos.addItemListener(RosListener);
                boutonSmith.addItemListener(formatListener);
    }
    class RadioListener implements ItemListener {
     
     
           public void itemStateChanged(ItemEvent e) {           
     
               Object source = e.getItemSelectable();
               if(e.getStateChange() != ItemEvent.SELECTED){
                   return;
               }
               if (source == boutonS) {
                   parAff = "S";//"parametre" à transmettre au calculateur et à l'afficheur     
                   System.out.println(parAff+formaAff);
               }
    }
    }
    L'ennui c'est que je voudrais passer "parAff" dans la classe AffectationBontonCalcul en sachant que itemStateChanged veut se mettre qu'en void.
    il faudrait sans doute faire dans la classe AffectationBoutonCalcul un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Mafenetre.RadioListener get = new Mafenetre.RadioListener();
    mais cela me met une erreur:

    an enclosing instance that contains Mafenetre.RadioListener is required

    Qu'est ce que c'est?
    Merci pour votre aide!

  2. #2
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Bonjour,

    les classes internes, c'est un peu coton à gérer, il faut être habitué. Ton problème vient du fait que la classe interne RadioListener n'est pas statique. Cela lui permet d'accéder à la variable parAff de la classe MaFenetre, mais cela veut dire que chaque instance de RadioListener est liée à une instance de MaFenetre.

    Imagine que tu aies 2 fenêtres de type MaFenêtre. En créant un objet de type RadioListener, cet objet veut accéder au champ parAff d'une des deux fenêtres. Oui, mais laquelle ? C'est assez simple :
    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
    MaFenetre fenetre1 = new MaFenetre(...);
    MaFenetre fenetre2 = new MaFenetre(...);
     
    // On crée des RadioListener relatifs à fenetre1 :
    fenetre1.RadioListener r1 = new fenetre1.RadioListener(...);
    fenetre1.RadioListener rr1 = new fenetre1.RadioListener(...);
     
    // On crée un RadioListener pour la fenêtre2 :
    fenetre2.RadioListener r2 = new fenetre2.RadioListener(...);
     
    // Ne pas faire
    MaFenetre.RadioListener rl = ...
    // ca ne compile pas, puisque RadioListener n'est pas statique
     
     
    // Quelques tests pour illustrer
    if( r1.getClass().equals(rr1.getClass()) )
       // c'est vrai
    if( r1.getClass().equals(r2.getClass()) )
      // c'est faux
     
    if( r1.getParamDeMaFenetre().equals(rr1.getParamDeMaFenetre()) )
      // c'est vrai
    if( r1.getParamDeMaFenetre().equals(r2.getParamDeMaFenetre()) )
      // dans le cas général, c'est faux
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

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

Discussions similaires

  1. DOS passage de parametre à un .bat
    Par malbaladejo dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 26/11/2014, 15h44
  2. [langage] Passage de parametre lors de l execution
    Par WetzlarMan dans le forum Langage
    Réponses: 4
    Dernier message: 16/03/2004, 13h28
  3. Probleme de passage de parametre a un TQuery
    Par gve21 dans le forum C++Builder
    Réponses: 7
    Dernier message: 15/01/2004, 15h49
  4. Passage de parametre calculé
    Par soazig dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 06/06/2003, 16h25
  5. Passage de parametre a une anim Flash 5
    Par debug dans le forum Intégration
    Réponses: 4
    Dernier message: 03/06/2002, 17h59

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