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

Composants Java Discussion :

Problème avec plusieurs composants de même nature


Sujet :

Composants Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2006
    Messages : 30
    Par défaut Problème avec plusieurs composants de même nature
    Bonjour,

    Voici le topo : J'ai une boucle qui va créer plusieurs objets JLabel et chacun de ces objets appelle la méthode addMouseListener(this) comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    JLabel iconLabel = new JLabel();
    iconLabel.addMouseListener(this);
    Plus loin, je définis la méthode mouseClicked ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void mouseClicked(MouseEvent event) {
            if (event.getSource() == iconLabel) {
     
            }
        }
    J'en suis maintenant rendu à vouloir savoir lequel de ces JLabel a été cliqué spécifiquement. Je sais que je pourrais les créer à la mitaine avec exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    JLabel label1 = new JLabel();
    JLabel label2 = new JLabel();
    etc... et ainsi la méthode getSource() fonctionnerait mais comme le nombre de JLabel créé à chaque ouverture du programme varie, cette solution n'est pas possible.

    J'ai également découvert la méthode setName() qui me permettrait de donner à chaque JLabel un nom unique et ainsi, la possibilité d'y référer mais je n'arrive pas à intégrer cette solution à ma démarche.

    Aide requise svp!

    Merci d'avance,

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Quel est le but de ce listener ???

    a++

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2006
    Messages : 30
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Salut,

    Quel est le but de ce listener ???

    a++
    Hé bien, l'application va monitorer des dslam qui sont dans le champs via snmp. Dans mon application, on voit tous les dslam (représentés par un JLabel vide avec un Icon) ainsi que leur statut, online ou non. Je voudrais maintenant permettre à l'utilisateur de cliquer sur un pour avoir des options (pouvoir le reseter, voir ses statistiques etc.)

    Je dois donc savoir sur quel JLabel l'utilisateur a cliqué afin de pouvoir en extraire le ip.

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Ben si tu peux identifié tes dslam par un nom, tu peux utiliser setName() en effet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	public void mouseClicked(MouseEvent event) {
            JLabel source = (JLabel)event.getSource();
            String dslam = source.getName();
     
            // Ton code
        }
    Maintenant si tu as besoin de données plus complexe, tu peux utiliser une sous-classe ou putClientProperty()/getClientProperty()...

    a++

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2006
    Messages : 30
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Ben si tu peux identifié tes dslam par un nom, tu peux utiliser setName() en effet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	public void mouseClicked(MouseEvent event) {
            JLabel source = (JLabel)event.getSource();
            String dslam = source.getName();
     
            // Ton code
        }
    Maintenant si tu as besoin de données plus complexe, tu peux utiliser une sous-classe ou putClientProperty()/getClientProperty()...

    a++
    Ok, ça fonctionne! C'était vraiment le casting vers JLabel qui m'échappait.

    Merci.

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

Discussions similaires

  1. problèmes avec plusieurs TQuery sur un même Form
    Par tomguiss dans le forum C++Builder
    Réponses: 3
    Dernier message: 26/01/2008, 12h22
  2. problème avec le composant TSQLQuery
    Par vbcasimir dans le forum Bases de données
    Réponses: 6
    Dernier message: 31/05/2005, 16h45
  3. [XP Pro]Problème avec plusieurs profils utilisateurs sur PC
    Par marsup54 dans le forum Windows XP
    Réponses: 8
    Dernier message: 27/04/2005, 09h32
  4. Problème avec le composant TXMLDocument
    Par kurul1 dans le forum C++Builder
    Réponses: 9
    Dernier message: 14/04/2005, 15h36
  5. Problème avec des composants non déclarés
    Par vbcasimir dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/01/2005, 11h17

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