0% ont trouvé ce document utile (0 vote)
12 vues16 pages

Chap 4 Event

Le document traite des événements dans la programmation graphique, définissant un événement comme un changement d'état d'un objet en réponse à des interactions utilisateur. Il décrit le design pattern Observateur/Observé pour le traitement des événements, où un objet informant plusieurs autres objets de tout changement d'état. Différents types d'événements et d'écouteurs sont également abordés, illustrant comment les actions de l'utilisateur déclenchent des événements dans une interface graphique.

Transféré par

Makrem Hammadi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
12 vues16 pages

Chap 4 Event

Le document traite des événements dans la programmation graphique, définissant un événement comme un changement d'état d'un objet en réponse à des interactions utilisateur. Il décrit le design pattern Observateur/Observé pour le traitement des événements, où un objet informant plusieurs autres objets de tout changement d'état. Différents types d'événements et d'écouteurs sont également abordés, illustrant comment les actions de l'utilisateur déclenchent des événements dans une interface graphique.

Transféré par

Makrem Hammadi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Interface

 graphique    
PO2  (2014-­‐2015)  

Chapitre  4  Evénements    
Evénements    
1. Evénements  
2. Traitement  des  événements  
3. Evénements  et  écouteurs/Ecouteurs  
Evénements  
• Au  sens  large,  il  s’agit  d’un  changement  d’état  
d’un  objet  dans  une  intervalle  de  temps.  
Evénements  
• Au  sens  propre  pour  la  programmaLon  
graphique,  lorsque  l’uLlisateur  interagit  avec  
une  interface  graphique  (en  appuyant  sur  une  
touche  du  clavier  ou  un  bouton  de  souris  par  
exemple),  un  (ou  plusieurs)  événement  est  
généré  .    
Traitement  des  événements  
• La  programmaLon  événemenLelle    
– répond  aux  différents  événements.  
– uLlise  un  design  paQern  Observateur/Observé  
pour  le  traitement  des  événements.  
Observateur/Observé    
• Le  design  paQern  Observateur/Observé  définit  une  relaLon  
entre  un  objet  et  plusieurs  objets,  de  façon  que,  si  un  objet  
change  d’état,  tous  ceux  qui  en  dépendent  en  soient  
informés  et  mis  à  jour  automaLquement.  
• Ce  design  paQern  conLent  trois  éléments  :  
– Observé  (Observable)      
• Associé  à  une  liste  des  observateurs  
• Produit  des  évènements      
• NoLfie  les  observateurs  lorsque  un  évènement  se  produit  
– Evénement  (Event)      
• Un  changement  d’état  de  l’observé  
– Observateur  (Observer)      
• Traite  des  événements  venant  de  l’observé  
Observateur/Observé    
Observateur/Observé    
• Avec  GUI  :  
– Composant  (Observé)  
• Produit  l’événement  (généralement  en  conséquence  d’une  acLon  de  
l’uLlisateur).    
– Evénement  
• ComponentEvent    
• ContainerEvent    
• MouseEvent  
• WindowEvent  
• keyEvent          
– Ecouteur  (Observateur)  
• Traite  l’événement  en  exécutant  une  méthode  en  rapport  avec  la  
nature  précise  de  celui-­‐ci.    
       
Evénements  et  écouteurs  
• Types  d’événements  et  d’écouteurs  
– AcLonEvent  /AcLonListener  
– MouseEvent  /MouseListener,  
MouseMoLonListener    
– WindowEvent  /WindowListener      
AcLonEvent  et  AcLonListener  
• AcLonEvent  correspond  au  déclanchement  de  
l'acLon  sur  un  composant  graphique:    
– Le  clic  sur  un  bouton    
– La  frappe  de  la  touche  «  enter  »  sur  un  TextField  
– Etc.  
• hQp://docs.oracle.com/javase/1.4.2/docs/api/
java/awt/event/AcLonEvent.html  
Classe  interne  :  JetDeEvent1  
 JetDePanel()  {   • JetListener  sous  forme  de  classe  
               //  creer  deux  De  
interne    
               deGauche    =  new  DePanel();  
               deDroit  =  new  DePanel();                 • Avantage  :    
               //  creer  deux  buQons     – accède  facilement  aux  variables  
               jetBuQon1  =  new  JBuQon("Joueur1");   d'instance  de  la  classe  JetPanel    
               jetBuQon2  =  new  JBuQon("Joueur2");                
– permet  plusieurs  instances  
               //  créer  une  instance  de  JetListener  
               JetListener  jetListener  =  new  JetListener();  
               jetBuQon1.addAcLonListener(jetListener);  
               jetBuQon2.addAcLonListener(jetListener);                
               //...  placer  components  
               this.setLayout(new  BorderLayout());  
               this.add(jetBuQon1,  BorderLayout.NORTH);  
               this.add(deGauche  ,  BorderLayout.WEST);  
               this.add(deDroit,  BorderLayout.EAST);  
               this.add(jetBuQon2,  BorderLayout.SOUTH);  
       }  
Classe  interne  :  JetDeEvent1  
 //  classe  interne  :  JetListener     • Les  événements  écoutés  sont  de  
       private  class  JetListener  implements   la  classe  "AcLonEvent"  qui  hérite  
AcLonListener  {  
de  la  superclasse  Event    
               public  void  acLonPerformed(AcLonEvent  
e)  {   • Méthodes  permeQant  d'obtenir  
                  Object  source  =  e.getSource();   des  informaLons  sur  ce  qui  est  
                  if  (source  ==  jetBuQon1)   survenu    
                    deGauche.jet();   – getSource()  donne  le  composant  
                  else   source  de  l'événement    
                    deDroit.jet();   – getAcLonCommand()  donne  le  
               }   nom  d'acLon,  par  défaut  le  texte  
       }   du  bouton,  du  menu,  ...    
}  
Classe  interne  anonyme  :  JetDeEvent2  
               //  creer  deux  buQons     • JetListener  sous  forme  de  classe  
               jetBuQon1  =  new  JBuQon("Joueur1");  
interne  anonyme    
               jetBuQon2  =  new  JBuQon("Joueur2");                              
               //  classes  interne  anonyme   • Avantage  :  
               jetBuQon1.addAcLonListener(new   – accède  facilement  aux  variables  
AcLonListener()  {   d'instance  de  la  classe  JetDePanel  
                 public  void  acLonPerformed(AcLonEvent  e)  {  
                          deGauche.jet();  
• Inconvénient  :  
                 }   – n'a  qu'1  instance    
          }   – code  moins  lisible  
         );            
         jetBuQon2.addAcLonListener(new  
AcLonListener()  {  
                 public  void  acLonPerformed(AcLonEvent  e)  {  
                          deDroit.jet();  
                 }  
          }  
         );  
MouseEvent  et  MouseListener  
• La  souris  (le  curseur)  passant  sur  la  surface  graphique  du  composant,  içi  un  
JPanel,  provoque  MouseEvent  :    
• Le  programme  MouseEvent.java  affiche  ces  événements  en  console  :  
! mouseMoved - MouseEvent :
java.awt.event.MouseEvent[MOUSE_MOVED(197,0),button=0,click
Count=0] on javax.swing.JPanel[,
0,0,200x100,layout=java.awt.FlowLayout,
alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,
minimumSize=,
preferredSize=java.awt.Dimension[width=200,height=100]]
mouseExited - MouseEvent :
java.awt.event.MouseEvent[MOUSE_EXITED(197,-
1),button=0,clickCount=0] on javax.swing.JPanel[,
0,0,200x100,layout=java.awt.FlowLayout,
alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,
minimumSize=,
preferredSize=java.awt.Dimension[width=200,height=100]]!
MouseEvent  et  MouseListener  
panel.addMouseListener(new MouseListener() {!
! public void mouseClicked(MouseEvent me) {!
! ! System.out.println("mouseClicked - MouseEvent : "+me.toString());!
! }!
! public void mouseEntered(MouseEvent  me)  {  … }!
! public void mouseExited(MouseEvent  me)  {  …}!
! public void mousePressed(MouseEvent  me)  {  … }!!
! public void mouseReleased(MouseEvent  me)  {  …}!
});!

Les  méthodes  des  MouseListener  :    


  mouseEntered()  :  entrée  de  souris      
  mouseExited()  :  sorLe  de  souris      
  mousePressed()  :  bouton  pressé      
  mouseReleased()  :  bouton  relaché      
  mouseClicked()  :  bouton  pressé  puis  relaché  dans  sa  zone  graphique    

Ces  méthodes  permeQent  de  recevoir  et  d'écouter  les  événements  qui  se  
sont  produits  
MouseEvent  et  MouseMoLonListener  
panel.addMouseMoLonListener(new  MouseMoLonListener()  {  
  public  void  mouseMoved(MouseEvent  me)  {  … }    
  public  void  mouseDragged(MouseEvent  me)  {  … }!
});  !

Les  méthodes  desMouseMoLonListener  :    


  mouseMoved()  :  mouvement  de  souris      
  mouseDragged()  :  mouvement  de  souris  avec  bouton  enfoncé    

L'événement  en  paramètre  donné  des  méthodes  est  celui  qui  s'est  produit  :  
il  conLent  des  informaLons  de  ce  qui  s'est  passé.  

Vous aimerez peut-être aussi