Vous êtes ici :
Accueil Cours Programmations La base des interfaces graphiques en langage Java Les évènements

La base des interfaces graphiques en langage Java : Les évènements

Avec des systèmes multi-tâches préemptifs sur micro-ordinateur ,le système d’exploitation passe l’essentiel de son " temps " à attendre une action de l’utilisateur (événement). Cette action déclenche un message que le système traite et envoie éventuellement à une application donnée.
Nous pourrons construire un logiciel qui réagira sur les interventions de l’utilisateur si nous arrivons à récupérer dans notre application les messages que le système envoie. Java autorise aussi la
consultation de tels messages.

  • L’approche événementielle intervient principalement dans l’interface entre le logiciel et l’utilisateur, mais aussi dans la liaison dynamique du logiciel avec le système, et enfin dans la sécurité.
  • L’approche visuelle nous aide et simplifie notre tâche dans la construction du dialogue homme-machine.

La combinaison de ces deux approches produit un logiciel habillé et adapté au système d’exploitation.

Maintenant que nous avons construit la partie affichage de l'IHM (Interface Homme Machine ) , il serait bon qu'elle interagisse avec l'utilisateur, par exemple à travers des messages comme les événements de souris ou bien d'appui de touches de claviers. Nous allons voir comment Java règle la gestion des échanges de
messages entre le système et notre application.

 

Modèle de délégation de l'événement en Java

 

En Java, le traitement et le transport des messages associés aux événements sont assurés par deux objets dans le cadre d'un modèle de communication dénommé le modèle de traitement des
événements par délégation (Delegation Event Model) :
Le message est envoyé par une source ou déclencheur de l'événement qui sera un composant Java, à un récepteur ou écouteur de l'événement qui est chargé de gérer l'événement, ce sera un objet de la classe des écouteurs instancié et ajouté au composant :

La méthode de programmation de l'interception des événements est nettement plus lourde syntaxiquement en Java qu'en Delphi et en Visual Basic, mais elle permet beaucoup plus de choix et elle est entièrement objet. Ce sont des classes abstraites dont le nom généralement se termine par Listener. Chacune de ces classes étend la classe abstraite d'interface EventListener.
Toutes ces classes d'écouteurs d'événements sont situées dans le package java.awt.event, elles se chargent de fournir les méthodes adéquates aux traitements d'événements envoyés par un déclencheur.

Voici la liste des interfaces d'écouteurs d'événements extraite du JDK 1.4.2 :


Action,ActionListener,AdjustmentListener,AncestorListener,AWTEventListener,
BeanContextMembershipListener, BeanContextServiceRevokedListener,BeanContextServices,
BeanContextServicesListener,CaretListener, CellEditorListener, ChangeListener,
ComponentListener, ContainerListener, DocumentListener, DragGestureListener,
DragSourceListener, DropTargetListener, FocusListener, HyperlinkListener,
InputMethodListener, InternalFrameListener, ItemListener, KeyListener, 
ListDataListener,ListSelectionListener, MenuDragMouseListener, MenuKeyListener, 
MenuListener,MouseInputListener, MouseListener, MouseMotionListener, PopupMenuListener,
PropertyChangeListener, TableColumnModelListener, TableModelListener, TextListener,
TreeExpansionListener, TreeModelListener, TreeSelectionListener, TreeWillExpandListener,
UndoableEditListener, VetoableChangeListener, WindowListener.

Les événements possibles dans Java sont des objets (un événement est un message contenant plusieurs informations sur les états des touches de clavier, des paramètres,...) dont les classes sont dans le package java.awt.event.

Voici quelques classes générales d'événements possibles tirées du JDK 1.4.2:

ActionEvent, AdjustmentEvent, AncestorEvent, ComponentEvent, InputMethodEvent,
InternalFrameEvent, InvocationEvent, ItemEvent, TextEvent.

Voyons un exemple de programme utilisant les évènements (ici le cas d'un bouton (JButton))

saisissez le code vous aurez l'explication après :

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Fenetre implements ActionListener{ 
JFrame fenetre = new JFrame("Application graphique en java");
JButton bouton = new JButton("Cliquez sur moi !");
public Fenetre(){
 bouton.addActionListener(this);
 fenetre.setSize(400 , 300);
 fenetre.add(bouton); 
fenetre.setVisible(true);
}
 public static void main(String[] args){
Fenetre f = new Fenetre();
}
@Overridepublic void actionPerformed(ActionEvent e){ JOptionPane.showMessageDialog(null, "Hello world");
}
}

Explication :

pour les imports vous savez déjà

l'instruction implements permet  d'implementer l'interface ActionListener qui contient la méthode actionPerformed()  .

la ligne JButton bouton = new JButton("Cliquez sur moi !"); permet de créer un bouton avec comme libellé "Cliquez sur moi !".

bouton.addActionListener(this); permet d'écouter le clic sur le bouton.

la méthode actionPerformed(ActionEvent e){} permet de mettre les codes qui seront éxécutées une fois le clique a eu lieu, à l'intérieur on a l'instruction:

JOptionPane.showMessageDialog(null, "Hello world");  qui a pour rôle d'afficher une boîte de dialogue qui a pour texte "Hello world" le premier paramètre (this) représente la fenêtre parente ici la fenêtre actuelle.

Voilà on a fini avec les évènements pour finir le cours on va voir dans la partie suivante un petit TP.

 




Vous êtes ici :
Accueil Cours Programmations La base des interfaces graphiques en langage Java Les évènements