GWT - Olay İşleme

GWT, Java AWT veya SWING Kullanıcı Arayüzü çerçevelerine benzer bir olay işleyici modeli sağlar.

  • Dinleyici arabirimi, pencere aracının bir olayı duyurmak için çağırdığı bir veya daha fazla yöntemi tanımlar. GWT, çeşitli olası olaylara karşılık gelen bir arabirim listesi sağlar.

  • Belirli bir tipteki olayları almak isteyen bir sınıf, ilişkili işleyici arayüzünü uygular ve daha sonra bir dizi olaya abone olmak için parçacığa kendisine bir referans iletir.

Örneğin, Button sınıf yayınlar click eventsbu nedenle, ClickHandler'ı işlemek için bir sınıf yazmanız gerekecekclick Etkinlik.

Olay İşleyici Arayüzleri

Tüm GWT olay işleyicileri, EventHandler arabiriminden genişletilmiştir ve her işleyicinin tek bir bağımsız değişkenle yalnızca tek bir yöntemi vardır. Bu argüman her zaman ilişkili olay türünün bir nesnesidir. Her birieventnesnesi, aktarılan olay nesnesini işlemek için bir dizi yönteme sahiptir. Örneğin tıklama olayı için işleyicinizi aşağıdaki gibi yazmanız gerekecek -

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

Artık tıklama olaylarını almak isteyen herhangi bir sınıf arayacak addClickHandler() bir olay işleyicisini aşağıdaki şekilde kaydetmek için -

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

Bir olay türünü destekleyen her widget, HandlerRegistration add formunun bir yöntemine sahip olacaktır.Fooİşleyici (FooEtkinlik) nerede Foo Click, Error, KeyPress vb. gibi gerçek olaydır.

Aşağıda, önemli GWT olay işleyicilerinin ve ilişkili olayların ve işleyici kayıt yöntemlerinin listesi verilmiştir -

Sr.No. Etkinlik Arayüzü Etkinlik Yöntemi ve Açıklaması
1 Seçim İşleyiciden Önce <I>

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

BeforeSelectionEvent tetiklendiğinde çağrılır.

2 BlurHandler

void on Blur(Blur Event event);

Bulanıklaştırma Olayı tetiklendiğinde çağrılır.

3 ChangeHandler

void on Change(ChangeEvent event);

Bir değişiklik olayı tetiklendiğinde çağrılır.

4 ClickHandler

void on Click(ClickEvent event);

Yerel bir tıklama etkinliği tetiklendiğinde çağrılır.

5 CloseHandler <T>

void on Close(CloseEvent<T> event);

CloseEvent tetiklendiğinde çağrılır.

6 Bağlam Menüsü İşleyici

void on Context Menu(Context Menu Event event);

Yerel bir bağlam menüsü olayı tetiklendiğinde çağrılır.

7 Çift Tıklama İşleyici

void on Double Click(Double Click Event event);

Bir Çift Tıklama Olayı tetiklendiğinde çağrılır.

8 Hata İşleyici

void on Error(Error Event event);

Hata Olayı tetiklendiğinde çağrılır.

9 Odak İşleyici

void on Focus(Focus Event event);

Focus Event tetiklendiğinde çağrılır.

10 Form Paneli. Tam İşleyiciyi Gönderin

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

Bir form başarıyla gönderildiğinde tetiklenir.

11 FormPanel.SubmitHandler

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

Form gönderildiğinde tetiklendi.

12 Tuş Aşağı İşleyici

void on Key Down(Key Down Event event);

KeyDownEvent tetiklendiğinde çağrılır.

13 KeyPressHandler

void on KeyPress(KeyPressEvent event);

KeyPressEvent tetiklendiğinde çağrılır.

14 KeyUpHandler

void on KeyUp(KeyUpEvent event);

KeyUpEvent tetiklendiğinde çağrılır.

15 LoadHandler

void on Load(LoadEvent event);

LoadEvent tetiklendiğinde çağrılır.

16 MouseDownHandler

void on MouseDown(MouseDownEvent event);

MouseDown tetiklendiğinde çağrılır.

17 MouseMoveHandler

void on MouseMove(MouseMoveEvent event);

MouseMoveEvent tetiklendiğinde çağrılır.

18 MouseOutHandler

void on MouseOut(MouseOutEvent event);

MouseOutEvent tetiklendiğinde çağrılır.

19 MouseOverHandler

void on MouseOver(MouseOverEvent event);

MouseOverEvent tetiklendiğinde çağrılır.

20 MouseUpHandler

void on MouseUp(MouseUpEvent event);

MouseUpEvent tetiklendiğinde çağrılır.

21 MouseWheelHandler

void on MouseWheel(MouseWheelEvent event);

MouseWheelEvent tetiklendiğinde çağrılır.

22 ResizeHandler

void on Resize(ResizeEvent event);

Widget yeniden boyutlandırıldığında tetiklenir.

23 ScrollHandler

void on Scroll(ScrollEvent event);

ScrollEvent tetiklendiğinde çağrılır.

24 SelectionHandler <I>

void on Selection(SelectionEvent<I> event);

SelectionEvent tetiklendiğinde çağrılır.

25 ValueChangeHandler <I>

void on ValueChange(ValueChangeEvent<I> event);

ValueChangeEvent tetiklendiğinde çağrılır.

26 Window.ClosingHandler

void on WindowClosing(Window.ClosingEvent event);

Tarayıcı penceresi kapanmadan veya farklı bir siteye gitmeden hemen önce tetiklenir.

27 Window.ScrollHandler

void on WindowScroll(Window.ScrollEvent event);

Tarayıcı penceresi kaydırıldığında tetiklenir.

Etkinlik Yöntemleri

Daha önce belirtildiği gibi, her işleyicinin, olay nesnesini tutan tek bir bağımsız değişkeni olan tek bir yöntemi vardır, örneğin void onClick (ClickEvent olayı) veya void onKeyDown (KeyDownEvent olayı) . ClickEvent ve KeyDownEvent gibi olay nesneleri , aşağıda listelenen birkaç ortak yönteme sahiptir:

Sr.No. Yöntem ve Açıklama
1

protected void dispatch(ClickHandler handler) Bu yöntem yalnızca HandlerManager tarafından çağrılmalıdır

2

DomEvent.Type <FooHandler> getAssociatedType() Bu yöntem kaydetmek için kullanılan türü döndürür Foo Etkinlik.

3

static DomEvent.Type<FooHandler> getType() Bu yöntem, ilişkili olay türünü alır Foo Etkinlikler.

4

public java.lang.Object getSource() Bu yöntem, bu olayı en son tetikleyen kaynağı döndürür.

5

protected final boolean isLive() Bu yöntem, olayın canlı olup olmadığını döndürür.

6

protected void kill() Bu yöntem olayı öldürür

Misal

Bu örnek, bir Click Olay ve KeyDownGWT'de olay işleme. GWT - Uygulama Oluştur bölümünde oluşturduğumuz GWT uygulamasını güncellemek için aşağıdaki adımları izleyin -

Adım Açıklama
1 GWT - Uygulama Oluştur bölümünde açıklandığı gibi com.tutorialspoint paketinin altında HelloWorld adıyla bir proje oluşturun .
2 Değiştir HelloWorld.gwt.xml , HelloWorld.css , HelloWorld.html ve HelloWorld.java olarak aşağıda açıklanmıştır. Geri kalan dosyaları değiştirmeden tutun.
3 Uygulanan mantığın sonucunu doğrulamak için uygulamayı derleyin ve çalıştırın.

Değiştirilmiş modül tanımlayıcısının içeriği aşağıdadır 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>

Değiştirilen Stil Sayfası dosyasının içeriği aşağıdadır 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;
}

Aşağıda, değiştirilmiş HTML ana bilgisayar dosyasının içeriği verilmiştir 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>

Aşağıdaki Java dosyası içeriğine sahip olalım src/com.tutorialspoint/HelloWorld.java Olay İşleme'nin GWT'de kullanımını gösterecektir.

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());
         }
      }
   }
}

Yapılan tüm değişikliklere hazır olduğunuzda, uygulamayı GWT - Uygulama Oluştur bölümünde yaptığımız gibi geliştirme modunda derleyip çalıştıralım . Başvurunuzda her şey yolundaysa, bu aşağıdaki sonucu verecektir -