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 :

ne pas dupliquer des actionPerformed(ActionEvent e)


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 157
    Par défaut ne pas dupliquer des actionPerformed(ActionEvent e)
    Bonjour,
    dans mon interface graphique, une partie se répète :
    Il s'agit d'une List() de trois éléments qui lorsque l'on en sélectionne un élément remplit un JTextField()
    Ce bout d'interface se répète 2x. mais avec 2 JTextField() différents.
    Pour ne pas dupliquer inutilement du code, j'aimerais pouvoir en faire un objet. Comment faire ?
    Comment faire pour ne pas dupliquer les actionPerformed(ActionEvent e) ?
    Comment l'intégrer ensuite dans un panel ?

  2. #2
    Membre chevronné Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Par défaut
    Es-tu sûr que tu parles bien d'actionPerformed ? Il ne s'agirait pas plutôt d'ItemListener ?

    Si c'est bien ItemListener, a chaque selection, tu as 2 évènements générés :
    - un pour la déselection de l'ancienne selection (ItemEvent.getStateChange() == ItemEvent.DESELECTED)
    - un pour la selection de la nouvelle selection (ItemEvent.getStateChange() == ItemEvent.SELECTED)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 157
    Par défaut
    En fait je parle de itemStateChanged(ItemEvent e)
    Enfin, bref, ce n'est pas important... ma question porte sur la duplication du code, pas sur la réaction de la liste (qui marche)

  4. #4
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Ben, comme tu le dis, il suffit d'utiliser une instance au lieu d'une classe anonyme. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ItemListener listener = new ItemListener(){
       public void itemStateChanged(ItemEvent e){
          //Quelque chose
       }
    }
     
    jList1.addItemListener(listener);
    jList2.addItemListener(listener);

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 157
    Par défaut
    Merci pour ta réponse, mais elle ne répond pas à ma question :
    je vais essayer d'être plus clair:
    J'ai cette partie du code qui apparaît 2x (avec d'autre noms de variables :
    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
    33
    34
    35
    36
    37
    38
    39
    private List listeDS;
    private JButton buttonConnect, buttonDisconnect;
    private JTextField champ1Connect,champ2Connect;
     public Constructeur() {
    //initialisation, panels,etc ...
    listeDS = new List();
    listeDS.add("el1",0);
    listeDS.add("el2",1);
    listeDS.add("el3",2);
    listeDS.add("el4",3);
    panel.add(listeDS);
     
    listeDS.addActionListener(this);	
    listeDS.addItemListener(this);		
    champ1Connect = new JTextField("",15);
    p.add(champ1Connect);
     pchamp2=new JTextField("",8);
    p.add(champ2);
     
    buttonConnect = new JButton("Connexion");
    p.add(buttonConnect);
    buttonConnect.addActionListener(this);
     
    buttonDisconnect = new JButton("Déconnexion");
    p.add(buttonDisconnect);
    buttonDisconnect.addActionListener(this);
     
    }
     
    //plus bas, les listener :
    public void itemStateChanged(ItemEvent e) {		
    		Object o = e.getItemSelectable();
    		if (o == listeDS){
    			selectionDS();
    //selectionDS modifie champ1 et champ2 et j'y accède ensuite dans d'autres
    //méthodes
    		}
     
    	}
    Tout le code ci-dessus est dans le 1er onglet de mon programme (mon programme a des onglets) et je souhaite avoir le même code dans mon 2ème onglet (mais pas les mêmes objets),
    Comment faire ?

  6. #6
    Membre chevronné Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Par défaut
    Je ne comprends pas ton problème... L'héritage serait-il une solution ?

  7. #7
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Ben pourquoi tu ne fais pas une vraie classe de Listener ? (ce qui est normalement la vraie façon de faire ... les notions de classes anonymes et de mélanger l'objet et son listener sont des racourcis ...).
    Cette classe aurait en attribut les objets donc elle a besoin, et tu pourrais en faire une instance pour chaque élement que tu veux "écouter" ...

Discussions similaires

  1. Réponses: 6
    Dernier message: 05/08/2011, 09h27
  2. Ne pas superposer des controles.
    Par __fabrice dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 21/11/2005, 22h35
  3. Rnd qui ne donne pas que des bonnes valeurs
    Par kubito dans le forum Access
    Réponses: 2
    Dernier message: 08/10/2004, 18h00
  4. Réponses: 3
    Dernier message: 08/09/2003, 15h06

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