GWT - Gestion des événements

GWT fournit un modèle de gestionnaire d'événements similaire aux frameworks d'interface utilisateur Java AWT ou SWING.

  • Une interface d'écoute définit une ou plusieurs méthodes que le widget appelle pour annoncer un événement. GWT fournit une liste d'interfaces correspondant à divers événements possibles.

  • Une classe souhaitant recevoir des événements d'un type particulier implémente l'interface de gestionnaire associée, puis passe une référence à elle-même au widget pour s'abonner à un ensemble d'événements.

Par exemple, le Button classe publie click eventsvous devrez donc écrire une classe pour implémenter ClickHandler pour gérerclick un événement.

Interfaces de gestionnaire d'événements

Tous les gestionnaires d'événements GWT ont été étendus à partir de l' interface EventHandler et chaque gestionnaire n'a qu'une seule méthode avec un seul argument. Cet argument est toujours un objet de type événement associé. Chaqueeventobject ont un certain nombre de méthodes pour manipuler l'objet événement passé. Par exemple, pour l'événement click, vous devrez écrire votre gestionnaire comme suit -

/**
 * create a custom click handler which will call 
 * onClick method when button is clicked.
 */
public class MyClickHandler implements ClickHandler {
   @Override
   public void onClick(ClickEvent event) {
      Window.alert("Hello World!");
   }
}

Désormais, toute classe souhaitant recevoir des événements de clic appellera addClickHandler() pour enregistrer un gestionnaire d'événements comme suit -

/**
 * create button and attach click handler
 */
Button button = new Button("Click Me!");
button.addClickHandler(new MyClickHandler());

Chaque widget prenant en charge un type d'événement aura une méthode de la forme HandlerRegistration addFooGestionnaire (FooÉvénement) où Foo est l'événement réel comme Click, Error, KeyPress etc.

Voici la liste des gestionnaires d'événements GWT importants et des événements associés et des méthodes d'enregistrement des gestionnaires -

N ° Sr. Interface d'événement Méthode d'événement et description
1 Avant le gestionnaire de sélection <I>

void on Before Selection (Before Selection Event<I> event);

Appelé lorsque BeforeSelectionEvent est déclenché.

2 BlurHandler

void on Blur(Blur Event event);

Appelé lorsque l'événement Blur est déclenché.

3 ChangeHandler

void on Change(ChangeEvent event);

Appelé lorsqu'un événement de modification est déclenché.

4 ClickHandler

void on Click(ClickEvent event);

Appelé lorsqu'un événement de clic natif est déclenché.

5 CloseHandler <T>

void on Close(CloseEvent<T> event);

Appelé lorsque CloseEvent est déclenché.

6 Gestionnaire de menu contextuel

void on Context Menu(Context Menu Event event);

Appelé lorsqu'un événement de menu contextuel natif est déclenché.

sept Gestionnaire de double-clic

void on Double Click(Double Click Event event);

Appelé lorsqu'un événement de double clic est déclenché.

8 Gestionnaire d'erreurs

void on Error(Error Event event);

Appelé lorsque l'événement d'erreur est déclenché.

9 Gestionnaire de focus

void on Focus(Focus Event event);

Appelé lorsque l'événement Focus est déclenché.

dix Panneau de formulaire Soumettre le gestionnaire complet

void on Submit Complete(Form Panel.Submit Complete Event event);

Lancé lorsqu'un formulaire a été soumis avec succès.

11 FormPanel.SubmitHandler

void on Submit(Form Panel.Submit Event event);

Lancé lorsque le formulaire est soumis.

12 Gestionnaire de clé vers le bas

void on Key Down(Key Down Event event);

Appelé lorsque KeyDownEvent est déclenché.

13 KeyPressHandler

void on KeyPress(KeyPressEvent event);

Appelé lorsque KeyPressEvent est déclenché.

14 KeyUpHandler

void on KeyUp(KeyUpEvent event);

Appelé lorsque KeyUpEvent est déclenché.

15 LoadHandler

void on Load(LoadEvent event);

Appelé lorsque LoadEvent est déclenché.

16 MouseDownHandler

void on MouseDown(MouseDownEvent event);

Appelé lorsque MouseDown est déclenché.

17 MouseMoveHandler

void on MouseMove(MouseMoveEvent event);

Appelé lorsque MouseMoveEvent est déclenché.

18 MouseOutHandler

void on MouseOut(MouseOutEvent event);

Appelé lorsque MouseOutEvent est déclenché.

19 MouseOverHandler

void on MouseOver(MouseOverEvent event);

Appelé lorsque MouseOverEvent est déclenché.

20 MouseUpHandler

void on MouseUp(MouseUpEvent event);

Appelé lorsque MouseUpEvent est déclenché.

21 MouseWheelHandler

void on MouseWheel(MouseWheelEvent event);

Appelé lorsque MouseWheelEvent est déclenché.

22 ResizeHandler

void on Resize(ResizeEvent event);

Déclenché lorsque le widget est redimensionné.

23 ScrollHandler

void on Scroll(ScrollEvent event);

Appelé lorsque ScrollEvent est déclenché.

24 SelectionHandler <I>

void on Selection(SelectionEvent<I> event);

Appelé lorsque SelectionEvent est déclenché.

25 ValueChangeHandler <I>

void on ValueChange(ValueChangeEvent<I> event);

Appelé lorsque ValueChangeEvent est déclenché.

26 Window.ClosingHandler

void on WindowClosing(Window.ClosingEvent event);

Lancé juste avant que la fenêtre du navigateur se ferme ou accède à un autre site.

27 Window.ScrollHandler

void on WindowScroll(Window.ScrollEvent event);

Déclenché lorsque la fenêtre du navigateur fait défiler.

Méthodes d'événement

Comme mentionné précédemment, chaque gestionnaire a une seule méthode avec un seul argument qui contient l'objet événement, par exemple void onClick (événement ClickEvent) ou void onKeyDown (événement KeyDownEvent) . Les objets événement tels que ClickEvent et KeyDownEvent ont quelques méthodes courantes répertoriées ci-dessous -

N ° Sr. Méthode et description
1

protected void dispatch(ClickHandler handler) Cette méthode ne doit être appelée que par HandlerManager

2

DomEvent.Type <FooHandler> getAssociatedType() Cette méthode renvoie le type utilisé pour s'enregistrer Foo un événement.

3

static DomEvent.Type<FooHandler> getType() Cette méthode obtient le type d'événement associé à Foo événements.

4

public java.lang.Object getSource() Cette méthode renvoie la source qui a déclenché cet événement en dernier.

5

protected final boolean isLive() Cette méthode renvoie si l'événement est en direct.

6

protected void kill() Cette méthode tue l'événement

Exemple

Cet exemple vous guidera à travers des étapes simples pour montrer l'utilisation d'un Click Événement et KeyDownGestion des événements dans GWT. Suivez les étapes suivantes pour mettre à jour l'application GWT que nous avons créée dans GWT - Chapitre Créer une application -

Étape La description
1 Créez un projet avec un nom HelloWorld sous un package com.tutorialspoint comme expliqué dans le chapitre GWT - Créer une application .
2 Modifiez HelloWorld.gwt.xml , HelloWorld.css , HelloWorld.html et HelloWorld.java comme expliqué ci-dessous. Gardez le reste des fichiers inchangé.
3 Compilez et exécutez l'application pour vérifier le résultat de la logique implémentée.

Voici le contenu du descripteur de module modifié src/com.tutorialspoint/HelloWorld.gwt.xml.

<?xml version = "1.0" encoding = "UTF-8"?>
<module rename-to = 'helloworld'>
   <!-- Inherit the core Web Toolkit stuff.                        -->
   <inherits name = 'com.google.gwt.user.User'/>

   <!-- Inherit the default GWT style sheet.                       -->
   <inherits name = 'com.google.gwt.user.theme.clean.Clean'/>

   <!-- Specify the app entry point class.                         -->
   <entry-point class = 'com.tutorialspoint.client.HelloWorld'/>

   <!-- Specify the paths for translatable code                    -->
   <source path = 'client'/>
   <source path = 'shared'/>

</module>

Voici le contenu du fichier de feuille de style modifié war/HelloWorld.css.

body {
   text-align: center;
   font-family: verdana, sans-serif;
}

h1 {
   font-size: 2em;
   font-weight: bold;
   color: #777777;
   margin: 40px 0px 70px;
   text-align: center;
}

Voici le contenu du fichier hôte HTML modifié war/HelloWorld.html.

<html>
   <head>
      <title>Hello World</title>
      <link rel = "stylesheet" href = "HelloWorld.css"/>
      <script language = "javascript" src = "helloworld/helloworld.nocache.js">
      </script>
   </head>

   <body>
      <h1>Event Handling Demonstration</h1>
      <div id = "gwtContainer"></div>
   </body>
</html>

Laissez-nous avoir le contenu suivant du fichier Java src/com.tutorialspoint/HelloWorld.java qui démontrera l'utilisation de la gestion des événements dans GWT.

package com.tutorialspoint.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.dom.client.KeyDownEvent;
import com.google.gwt.event.dom.client.KeyDownHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.DecoratorPanel;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;

public class HelloWorld implements EntryPoint {
   public void onModuleLoad() {
      /**
       * create textbox and attach key down handler
       */
      TextBox textBox = new TextBox(); 
      textBox.addKeyDownHandler(new MyKeyDownHandler());

      /*
       * create button and attach click handler
       */
      Button button = new Button("Click Me!");
      button.addClickHandler(new MyClickHandler());

      VerticalPanel panel = new VerticalPanel();
      panel.setSpacing(10);
      panel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
      panel.setSize("300", "100");
      panel.add(textBox);
      panel.add(button);

      DecoratorPanel decoratorPanel = new DecoratorPanel();
      decoratorPanel.add(panel);
      RootPanel.get("gwtContainer").add(decoratorPanel);
   }

   /** 
    * create a custom click handler which will call 
    * onClick method when button is clicked.
    */
   private class MyClickHandler implements ClickHandler {
      @Override
      public void onClick(ClickEvent event) {
         Window.alert("Hello World!");
      }
   }

   /**
    * create a custom key down handler which will call 
    * onKeyDown method when a key is down in textbox.
    */
   private class MyKeyDownHandler implements KeyDownHandler {
      @Override
      public void onKeyDown(KeyDownEvent event) {
         if(event.getNativeKeyCode() == KeyCodes.KEY_ENTER){
            Window.alert(((TextBox)event.getSource()).getValue());
         }
      }
   }
}

Une fois que vous êtes prêt avec tous les changements effectués, laissez-nous compiler et exécuter l'application en mode développement comme nous l'avons fait dans le chapitre GWT - Créer une application . Si tout va bien avec votre application, cela produira le résultat suivant -