GWT - Penanganan Acara

GWT menyediakan model penanganan peristiwa yang mirip dengan kerangka kerja Antarmuka Pengguna AWT atau SWING Java.

  • Antarmuka pendengar menentukan satu atau beberapa metode yang dipanggil widget untuk mengumumkan suatu peristiwa. GWT menyediakan daftar antarmuka yang sesuai dengan berbagai kemungkinan kejadian.

  • Sebuah kelas yang ingin menerima kejadian dari jenis tertentu mengimplementasikan antarmuka penangan terkait dan kemudian meneruskan referensi ke widget itu sendiri untuk berlangganan sekumpulan kejadian.

Misalnya, file Button kelas menerbitkan click eventssehingga Anda akan harus menulis kelas untuk melaksanakan ClickHandler untuk menanganiclick peristiwa.

Antarmuka Penangan Peristiwa

Semua penangan peristiwa GWT telah diperluas dari antarmuka EventHandler dan setiap penangan hanya memiliki satu metode dengan satu argumen. Argumen ini selalu merupakan objek dari tipe kejadian terkait. Setiapeventobjek memiliki sejumlah metode untuk memanipulasi objek acara yang dilewatkan. Misalnya untuk acara klik Anda harus menulis penangan Anda sebagai berikut -

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

Sekarang setiap kelas yang ingin menerima peristiwa klik akan menelepon addClickHandler() untuk mendaftarkan event handler sebagai berikut -

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

Setiap widget yang mendukung tipe event akan memiliki metode dari bentuk penambahan HandlerRegistrationFooPenangan (FooAcara) di mana Foo adalah kejadian sebenarnya seperti Klik, Kesalahan, KeyPress, dll.

Berikut adalah daftar penangan peristiwa GWT penting dan peristiwa terkait serta metode pendaftaran penangan -

Sr.No. Antarmuka Acara Metode & Deskripsi Acara
1 Sebelum Penangan Pemilihan <I>

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

Dipanggil saat BeforeSelectionEvent diaktifkan.

2 BlurHandler

void on Blur(Blur Event event);

Dipanggil saat Blur Event diaktifkan.

3 ChangeHandler

void on Change(ChangeEvent event);

Dipanggil saat peristiwa perubahan diaktifkan.

4 ClickHandler

void on Click(ClickEvent event);

Dipanggil saat peristiwa klik asli diaktifkan.

5 CloseHandler <T>

void on Close(CloseEvent<T> event);

Dipanggil saat CloseEvent diaktifkan.

6 Penangan Menu Konteks

void on Context Menu(Context Menu Event event);

Dipanggil saat peristiwa menu konteks asli diaktifkan.

7 Double Click Handler

void on Double Click(Double Click Event event);

Dipanggil saat Peristiwa Klik Ganda diaktifkan.

8 Penangan Kesalahan

void on Error(Error Event event);

Dipanggil saat Peristiwa Kesalahan diaktifkan.

9 Penangan Fokus

void on Focus(Focus Event event);

Dipanggil saat Focus Event diaktifkan.

10 Panel Formulir. Kirim Penangan Lengkap

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

Diaktifkan ketika formulir telah berhasil dikirim.

11 FormPanel.SubmitHandler

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

Dipecat saat formulir dikirimkan.

12 Penangan Key Down

void on Key Down(Key Down Event event);

Dipanggil saat KeyDownEvent diaktifkan.

13 KeyPressHandler

void on KeyPress(KeyPressEvent event);

Dipanggil saat KeyPressEvent diaktifkan.

14 KeyUpHandler

void on KeyUp(KeyUpEvent event);

Dipanggil saat KeyUpEvent diaktifkan.

15 LoadHandler

void on Load(LoadEvent event);

Dipanggil saat LoadEvent diaktifkan.

16 MouseDownHandler

void on MouseDown(MouseDownEvent event);

Dipanggil saat MouseDown ditembakkan.

17 MouseMoveHandler

void on MouseMove(MouseMoveEvent event);

Dipanggil saat MouseMoveEvent diaktifkan.

18 MouseOutHandler

void on MouseOut(MouseOutEvent event);

Dipanggil saat MouseOutEvent diaktifkan.

19 MouseOverHandler

void on MouseOver(MouseOverEvent event);

Dipanggil saat MouseOverEvent diaktifkan.

20 MouseUpHandler

void on MouseUp(MouseUpEvent event);

Dipanggil saat MouseUpEvent diaktifkan.

21 MouseWheelHandler

void on MouseWheel(MouseWheelEvent event);

Dipanggil saat MouseWheelEvent diaktifkan.

22 ResizeHandler

void on Resize(ResizeEvent event);

Diaktifkan saat widget diubah ukurannya.

23 ScrollHandler

void on Scroll(ScrollEvent event);

Dipanggil saat ScrollEvent diaktifkan.

24 SelectionHandler <I>

void on Selection(SelectionEvent<I> event);

Dipanggil saat SelectionEvent diaktifkan.

25 ValueChangeHandler <I>

void on ValueChange(ValueChangeEvent<I> event);

Dipanggil saat ValueChangeEvent diaktifkan.

26 Window.ClosingHandler

void on WindowClosing(Window.ClosingEvent event);

Diaktifkan tepat sebelum jendela browser menutup atau menavigasi ke situs lain.

27 Window.ScrollHandler

void on WindowScroll(Window.ScrollEvent event);

Diaktifkan saat jendela browser di-scroll.

Metode Acara

Seperti disebutkan sebelumnya, setiap penangan memiliki satu metode dengan satu argumen yang menampung objek peristiwa, misalnya void onClick (peristiwa ClickEvent) atau void onKeyDown (peristiwa KeyDownEvent) . Objek acara seperti ClickEvent dan KeyDownEvent memiliki beberapa metode umum yang tercantum di bawah ini -

Sr.No. Metode & Deskripsi
1

protected void dispatch(ClickHandler handler) Metode ini seharusnya hanya dipanggil oleh HandlerManager

2

DomEvent.Type <FooHandler> getAssociatedType() Metode ini mengembalikan tipe yang digunakan untuk mendaftar Foo peristiwa.

3

static DomEvent.Type<FooHandler> getType() Metode ini mendapatkan jenis acara yang terkait dengan Foo acara.

4

public java.lang.Object getSource() Metode ini mengembalikan sumber yang terakhir kali mengaktifkan peristiwa ini.

5

protected final boolean isLive() Metode ini mengembalikan apakah acara ditayangkan.

6

protected void kill() Metode ini mematikan acara tersebut

Contoh

Contoh ini akan memandu Anda melalui langkah-langkah sederhana untuk menunjukkan penggunaan file Click Acara dan KeyDownPenanganan acara di GWT. Ikuti langkah-langkah berikut untuk memperbarui aplikasi GWT yang kami buat di GWT - bab Membuat Aplikasi -

Langkah Deskripsi
1 Buat proyek dengan nama HelloWorld di bawah paket com.tutorialspoint seperti yang dijelaskan di bab GWT - Membuat Aplikasi .
2 Modifikasi HelloWorld.gwt.xml , HelloWorld.css , HelloWorld.html dan HelloWorld.java seperti yang dijelaskan di bawah ini. Jaga file lainnya tidak berubah.
3 Kompilasi dan jalankan aplikasi untuk memverifikasi hasil dari logika yang diimplementasikan.

Berikut adalah isi dari deskriptor modul yang dimodifikasi 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>

Berikut ini adalah konten file Style Sheet yang dimodifikasi 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;
}

Berikut adalah konten dari file host HTML yang dimodifikasi 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>

Mari kita ikuti konten file Java berikut src/com.tutorialspoint/HelloWorld.java yang akan mendemonstrasikan penggunaan Penanganan Peristiwa di 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());
         }
      }
   }
}

Setelah Anda siap dengan semua perubahan yang dilakukan, mari kita kompilasi dan jalankan aplikasi dalam mode pengembangan seperti yang kita lakukan di bab GWT - Membuat Aplikasi . Jika semuanya baik-baik saja dengan aplikasi Anda, ini akan menghasilkan hasil sebagai berikut -