Учебники

GWT — обработка событий

GWT предоставляет модель обработчика событий, аналогичную инфраструктуре пользовательского интерфейса Java AWT или SWING.

  • Интерфейс слушателя определяет один или несколько методов, которые вызывает виджет для объявления события. GWT предоставляет список интерфейсов, соответствующих различным возможным событиям.

  • Класс, желающий получать события определенного типа, реализует связанный интерфейс обработчика и затем передает ссылку на себя виджету, чтобы подписаться на набор событий.

Интерфейс слушателя определяет один или несколько методов, которые вызывает виджет для объявления события. GWT предоставляет список интерфейсов, соответствующих различным возможным событиям.

Класс, желающий получать события определенного типа, реализует связанный интерфейс обработчика и затем передает ссылку на себя виджету, чтобы подписаться на набор событий.

Например, класс Button публикует события нажатия, поэтому вам нужно написать класс для реализации ClickHandler для обработки события нажатия .

Интерфейсы обработчиков событий

Все обработчики событий GWT были расширены из интерфейса EventHandler, и у каждого обработчика есть только один метод с одним аргументом. Этот аргумент всегда является объектом связанного типа события. Каждый объект события имеет несколько методов для управления переданным объектом события. Например, для события click вам нужно написать свой обработчик следующим образом:

/**
 * 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!");
   }
}

Теперь любой класс, желающий получать события щелчка, будет вызывать addClickHandler () для регистрации обработчика событий следующим образом:

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

Каждый виджет, поддерживающий тип события, будет иметь метод в форме HandlerRegistration добавить Foo Handler ( Foo Event), где Foo является фактическим событием, таким как Click, Error, KeyPress и т. Д.

Ниже приведен список важных обработчиков событий GWT и связанных с ними событий и методов регистрации обработчиков.

Sr.No. Интерфейс событий Метод и описание события
1 До выбора обработчик <I>

void on Before Selection (событие до выбора <I>);

Вызывается при запуске BeforeSelectionEvent.

2 BlurHandler

void on Blur (событие Blur Event);

Вызывается, когда происходит событие Blur.

3 ChangeHandler

void on Change (событие ChangeEvent);

Вызывается, когда происходит событие изменения.

4 ClickHandler

void on Click (событие ClickEvent);

Вызывается, когда происходит собственное событие клика.

5 CloseHandler <Т>

void on Close (событие CloseEvent <T>);

Вызывается при запуске CloseEvent.

6 Обработчик контекстного меню

void в контекстном меню (событие события контекстного меню);

Вызывается, когда происходит событие родного контекстного меню.

7 Обработчик двойного щелчка

аннулируется при двойном щелчке (событие двойного щелчка);

Вызывается при срабатывании события двойного щелчка.

8 Обработчик ошибок

void on Error (событие события ошибки);

Вызывается при возникновении события ошибки.

9 Фокус обработчик

void on Focus (событие фокуса);

Вызывается при срабатывании Focus Event.

10 Панель Form.Submit Complete Handler

аннулируется при отправке завершено (форма «Событие Panel.Submit Complete Event»);

Выполняется, когда форма была успешно отправлена.

11 FormPanel.SubmitHandler

void on Submit (Событие Form Panel.Submit Event);

Выполняется при отправке формы.

12 Key Down Handler

void on Key Down (событие Key Down);

Вызывается при срабатывании KeyDownEvent.

13 KeyPressHandler

void on KeyPress (событие KeyPressEvent);

Вызывается при срабатывании KeyPressEvent.

14 KeyUpHandler

void on KeyUp (событие KeyUpEvent);

Вызывается, когда KeyUpEvent запущен.

15 LoadHandler

void on Load (событие LoadEvent);

Вызывается при запуске LoadEvent.

16 MouseDownHandler

void on MouseDown (событие MouseDownEvent);

Вызывается при срабатывании MouseDown.

17 MouseMoveHandler

void on MouseMove (событие MouseMoveEvent);

Вызывается при срабатывании MouseMoveEvent.

18 MouseOutHandler

void on MouseOut (событие MouseOutEvent);

Вызывается при запуске MouseOutEvent.

19 MouseOverHandler

void on MouseOver (событие MouseOverEvent);

Вызывается при срабатывании MouseOverEvent.

20 MouseUpHandler

void on MouseUp (событие MouseUpEvent);

Вызывается при запуске MouseUpEvent.

21 MouseWheelHandler

void on MouseWheel (событие MouseWheelEvent);

Вызывается при запуске MouseWheelEvent.

22 ResizeHandler

void on Resize (событие ResizeEvent);

Запускается при изменении размера виджета.

23 ScrollHandler

void on Scroll (событие ScrollEvent);

Вызывается, когда запускается ScrollEvent.

24 SelectionHandler <I>

void on Selection (событие SelectionEvent <I>);

Вызывается при срабатывании SelectionEvent.

25 ValueChangeHandler <I>

void для ValueChange (событие ValueChangeEvent <I>);

Вызывается при запуске ValueChangeEvent.

26 Window.ClosingHandler

void on WindowClosing (событие Window.ClosingEvent);

Запускается непосредственно перед закрытием окна браузера или переходом на другой сайт.

27 Window.ScrollHandler

void on WindowScroll (событие Window.ScrollEvent);

Запускается при прокрутке окна браузера.

void on Before Selection (событие до выбора <I>);

Вызывается при запуске BeforeSelectionEvent.

void on Blur (событие Blur Event);

Вызывается, когда происходит событие Blur.

void on Change (событие ChangeEvent);

Вызывается, когда происходит событие изменения.

void on Click (событие ClickEvent);

Вызывается, когда происходит собственное событие клика.

void on Close (событие CloseEvent <T>);

Вызывается при запуске CloseEvent.

void в контекстном меню (событие события контекстного меню);

Вызывается, когда происходит событие родного контекстного меню.

аннулируется при двойном щелчке (событие двойного щелчка);

Вызывается при срабатывании события двойного щелчка.

void on Error (событие события ошибки);

Вызывается при возникновении события ошибки.

void on Focus (событие фокуса);

Вызывается при срабатывании Focus Event.

аннулируется при отправке завершено (форма «Событие Panel.Submit Complete Event»);

Выполняется, когда форма была успешно отправлена.

void on Submit (Событие Form Panel.Submit Event);

Выполняется при отправке формы.

void on Key Down (событие Key Down);

Вызывается при срабатывании KeyDownEvent.

void on KeyPress (событие KeyPressEvent);

Вызывается при срабатывании KeyPressEvent.

void on KeyUp (событие KeyUpEvent);

Вызывается, когда KeyUpEvent запущен.

void on Load (событие LoadEvent);

Вызывается при запуске LoadEvent.

void on MouseDown (событие MouseDownEvent);

Вызывается при срабатывании MouseDown.

void on MouseMove (событие MouseMoveEvent);

Вызывается при срабатывании MouseMoveEvent.

void on MouseOut (событие MouseOutEvent);

Вызывается при запуске MouseOutEvent.

void on MouseOver (событие MouseOverEvent);

Вызывается при срабатывании MouseOverEvent.

void on MouseUp (событие MouseUpEvent);

Вызывается при запуске MouseUpEvent.

void on MouseWheel (событие MouseWheelEvent);

Вызывается при запуске MouseWheelEvent.

void on Resize (событие ResizeEvent);

Запускается при изменении размера виджета.

void on Scroll (событие ScrollEvent);

Вызывается, когда запускается ScrollEvent.

void on Selection (событие SelectionEvent <I>);

Вызывается при срабатывании SelectionEvent.

void для ValueChange (событие ValueChangeEvent <I>);

Вызывается при запуске ValueChangeEvent.

void on WindowClosing (событие Window.ClosingEvent);

Запускается непосредственно перед закрытием окна браузера или переходом на другой сайт.

void on WindowScroll (событие Window.ScrollEvent);

Запускается при прокрутке окна браузера.

Методы событий

Как упоминалось ранее, у каждого обработчика есть один метод с единственным аргументом, который содержит объект события, например void onClick (событие ClickEvent) или void onKeyDown (событие KeyDownEvent) . Объекты событий, такие как ClickEvent и KeyDownEvent, имеют несколько общих методов, которые перечислены ниже:

Sr.No. Метод и описание
1

защищенная пустота отправки (обработчик ClickHandler) Этот метод должен вызываться только HandlerManager

2

DomEvent.Type <FooHandler> getAssociatedType () Этот метод возвращает тип, используемый для регистрации события Foo .

3

static DomEvent.Type <FooHandler> getType () Этот метод получает тип события, связанного с событиями Foo .

4

public java.lang.Object getSource () Этот метод возвращает источник, который последним вызвал это событие.

5

protected final boolean isLive () Этот метод возвращает, является ли событие живым.

6

protected void kill () Этот метод убивает событие

защищенная пустота отправки (обработчик ClickHandler) Этот метод должен вызываться только HandlerManager

DomEvent.Type <FooHandler> getAssociatedType () Этот метод возвращает тип, используемый для регистрации события Foo .

static DomEvent.Type <FooHandler> getType () Этот метод получает тип события, связанного с событиями Foo .

public java.lang.Object getSource () Этот метод возвращает источник, который последним вызвал это событие.

protected final boolean isLive () Этот метод возвращает, является ли событие живым.

protected void kill () Этот метод убивает событие

пример

Этот пример проведет вас через простые шаги, чтобы показать использование обработки событий Click и KeyDown в GWT. Выполните следующие шаги, чтобы обновить приложение GWT, которое мы создали в GWT — Глава « Создание приложения»

шаг Описание
1 Создайте проект с именем HelloWorld в пакете com.tutorialspoint, как описано в главе GWT — Создание приложения .
2 Измените HelloWorld.gwt.xml , HelloWorld.css , HelloWorld.html и HelloWorld.java, как описано ниже. Сохраните остальные файлы без изменений.
3 Скомпилируйте и запустите приложение, чтобы проверить результат реализованной логики.

Ниже приводится содержимое модифицированного дескриптора модуля 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>

Ниже приводится содержимое измененного файла таблицы стилей 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;
}

Ниже приведено содержимое модифицированного HTML-файла 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>

Позвольте нам иметь следующее содержимое файла Java src / com.tutorialspoint / HelloWorld.java, которое продемонстрирует использование обработки событий в 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());
         }
      }
   }
}

Когда вы будете готовы со всеми внесенными изменениями, давайте скомпилируем и запустим приложение в режиме разработки, как мы делали в главе GWT — Создание приложения . Если с вашим приложением все в порядке, это даст следующий результат: