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

avec Java Discussion :

La classe "ActionListener"


Sujet :

avec Java

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2010
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 172
    Points : 85
    Points
    85
    Par défaut La classe "ActionListener"
    Bonjour,

    j'ai une petit question quand une classe implemente la classe "ActionListener"
    est-ce que on a le droit d'utilider les methode de la classe MouseListener
    en plus de la methode "actionPerformed" de la classe "ActionListener" comme sur cet exemle :
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    class FenMenuSurgi extends JFrame implements  ActionListener  
    {
    	private JPopupMenu couleur ;
    	private JMenuItem rouge, vert ;
     
        public FenMenuSurgi ()   /*  constructeur de la classe   */
        { 
    	setTitle("Exemple de menu surgissant") ; 
    	setSize (400,120);  
        couleur = new JPopupMenu() ; /* creation menu surgissant Couleur et ses options Rouge et Vert */
        rouge = new JMenuItem ("Rouge") ;
        couleur.add(rouge);
        rouge.addActionListener(this) ;
        vert = new JMenuItem("Vert") ;
        couleur.add(vert) ;
        vert.addActionListener(this) ;
        setLocationRelativeTo(null);
     
        rouge.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,KeyEvent.CTRL_MASK));
     
        addMouseListener(new MouseAdapter()  //  on a utiliser le MouseAdapter() pour eviter d'inserer tout toute 
        {                                    //  les autres methodes de la classe ActionListener  
     
        	public void mouseReleased(MouseEvent Ev1)
            { 
        		if (Ev1.isPopupTrigger())    /*  la classe MouseEvent dispose d’une méthode
                                             "isPopupTrigger" qui fournit la valeur true si le 
                                             bouton concerné est celui traditionnellement réservé 
                                             aux menus surgissants  */
                couleur.show (Ev1.getComponent(), Ev1.getX(), Ev1.getY()) ; // La méthode "getComponent" de la classe "MouseEvent",laquelle   		
            }                                                            // fournit le composant (objet de type Component ou dérivé) 
            } ) ;                                                        // concerné par l’événement
        setVisible(true); 
     
       } 
     
     public void actionPerformed (ActionEvent Ev2)
      { 
    	Object source = Ev2.getSource() ;
        System.out.println ("Action avec chaine de commande = "+ Ev2.getActionCommand()) ;
        if (source == rouge) System.out.println ("** Action option rouge") ;
        if (source == vert) System.out.println ("** Action option vert") ;
      } 
     
     
     
     
    }

    Merci d'avance pour les réponse

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Points : 191
    Points
    191
    Par défaut
    Selon moi : oui, à condition d'implémenter aussi mouselistener (ce qui est autorisé)
    On apprend plus en répondant aux questions qu'en les posant.

  3. #3
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Points : 12 815
    Points
    12 815
    Par défaut
    Je pense qu'il y a un soucis de conception. A mon sens, ta jframe ne devrait pas implémenter ActionListener, sauf si c'est sur la frame en elle-même qu'il y a une action.

    Du coup, si j'étais toi, je ferais un addMouseListener() comme tu as déjà fais, et j'ajouterais des addTrucListener() pour les autres types qui t'intéressent.
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  4. #4
    Membre régulier
    Inscrit en
    Décembre 2010
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 172
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par thierryler Voir le message
    Du coup, si j'étais toi, je ferais un addMouseListener() comme tu as déjà fais, et j'ajouterais des addTrucListener() pour les autres types qui t'intéressent.
    Salut,
    le truc qui me dérange !! c'est que notre classe n'a pas implementée la classe "MouseListener" malgré ça on a pu utilisé sa "mouseReleased" ... dans la classe fenetre?

    A+

  5. #5
    zo1odMSQr5Fy
    Invité(e)
    Par défaut
    Citation Envoyé par zpico Voir le message
    Salut,
    le truc qui me dérange !! c'est que notre classe n'a pas implementée la classe "MouseListener" malgré ça on a pu utilisé sa "mouseReleased" ... dans la classe fenetre?

    A+
    Regarde ton code tu as la réponse dedans. A cet endroit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        addMouseListener(new MouseAdapter()  //  on a utiliser le MouseAdapter() pour eviter d'inserer tout toute 
        {                                    //  les autres methodes de la classe ActionListener  
     
        	public void mouseReleased(MouseEvent Ev1)
            { 
        		if (Ev1.isPopupTrigger())    /*  la classe MouseEvent dispose d’une méthode
                                             "isPopupTrigger" qui fournit la valeur true si le 
                                             bouton concerné est celui traditionnellement réservé 
                                             aux menus surgissants  */
                couleur.show (Ev1.getComponent(), Ev1.getX(), Ev1.getY()) ; // La méthode "getComponent" de la classe "MouseEvent",laquelle   		
            }                                                            // fournit le composant (objet de type Component ou dérivé) 
            } ) ;

  6. #6
    Membre régulier
    Inscrit en
    Décembre 2010
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 172
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par TheBear Voir le message
    Regarde ton code tu as la réponse dedans. A cet endroit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        addMouseListener(new MouseAdapter()  //  on a utiliser le MouseAdapter() pour eviter d'inserer tout toute 
        {                                    //  les autres methodes de la classe ActionListener  
     
        	public void mouseReleased(MouseEvent Ev1)
            { 
        		if (Ev1.isPopupTrigger())    /*  la classe MouseEvent dispose d’une méthode
                                             "isPopupTrigger" qui fournit la valeur true si le 
                                             bouton concerné est celui traditionnellement réservé 
                                             aux menus surgissants  */
                couleur.show (Ev1.getComponent(), Ev1.getX(), Ev1.getY()) ; // La méthode "getComponent" de la classe "MouseEvent",laquelle   		
            }                                                            // fournit le composant (objet de type Component ou dérivé) 
            } ) ;
    Bonjour,

    je ne là voie pas..!

  7. #7
    zo1odMSQr5Fy
    Invité(e)
    Par défaut
    Pour pouvoir utiliser mouseReleased , on a ajouté une instance de MouseAdapter via la fonction addMouseListener(new MouseAdapter());
    Le probléme est qu'il faut définir ce que va faire la fonction mouseReleased car ce n'est qu'une interface qu'on a instancié. On la précise donc dans la création en ajoutant { } aprés MouseAdapter() et avant );

    On précise qu'on définit mouseReleased en mettant le code suivant entre les { }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void mouseReleased(MouseEvent Ev1)
            { 
        		if (Ev1.isPopupTrigger())    /*  la classe MouseEvent dispose d’une méthode
                                             "isPopupTrigger" qui fournit la valeur true si le 
                                             bouton concerné est celui traditionnellement réservé 
                                             aux menus surgissants  */
                couleur.show (Ev1.getComponent(), Ev1.getX(), Ev1.getY()) ; // La méthode "getComponent" de la classe "MouseEvent",laquelle   		
            }
    Plus d'information pour MouseAdapter dans la doc : http://docs.oracle.com/javase/7/docs...seAdapter.html

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

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