Event adalah inti dari pemrograman GUI. GUI program tidak memiliki alur apa yang akan terjadi ketika program dijalankan, dalam arti langkah per langkah dari awal hingga akhir. Akan tetapi, program harus bisa bereaksi akan berbagai event (kejadian) yang bisa berasal dari mouse atau keyboard. User bisa menekan tombol keyboard apa saja, menggeser mouse, atau menekan tombol mouse. User bisa melakukannya kapan saja, dan komputer harus bisa bereaksi dengan tepat.
Dalam Java, event dilambangkan oleh objek. Ketika suatu event terjadi, sistem akan mengumpulkan informasi yang sesuai dengan even tersebut, kemudian membuat objek yang berisi informasi ini. Jenis even berbeda dilambangkan oleh objek dengan kelas yang berbeda pula. Setelah objek event dibuat, ia akan diberikan sebagai parameter pada subrutin yang ditugaskan untuk menangani event tersebut. Dengan menulis subrutin ini, programmer bisa memberi tahu apa yang harus dilakukan jika mouse diklik atau keyboard ditekan, misalnya.
Sebagai programmer Java, kita hanya melihat even dari sisi yang lebih umum. Banyak sekali hal yang terjadi antara tombol ditekan hingga subrutin yang kita buat melakukan tugasnya. Secara garis besar, dalam metode
main()
kita harus menuliskan perulangan dalam bentuk seperti :ketika program masih berjalan:
Tunggu hingga even berikutnya terjadi
Panggil subrutin untuk menangai event tersebut
Perulangan ini disebut perulangan event. Pada SWT kita harus menulis sendiri perulangan event ini pada metode
main()
kita dalam bentuk while (!shell.isDisposed()) if (!display.readAndDispatch()) display.sleep();
SWT memiliki dua jenis event, yaitu event tanpa tipe dan event bertipe.
Event tanpa tipe diwakili oleh kelas
Event
. Kelas ini menyimpan informasi yang berbeda-beda tergantung dari jenis. Akan tetapi secara umum semua event jenis apapun memiliki informasi berikut :Informasi | Penjelasan |
display | Display di mana event ini terjadi |
widget | Widget di mana event ini terjadi |
type | Jenis event yang terjadi |
Jenis event yang terjadi beserta penjelasannya dirangkum dalam tabel berikut ini :
Jenis Event | Penjelasan |
SWT.KeyDown | Tombol ditekan |
SWT.KeyUp | Tombol dilepaskan |
SWT.MouseDown | Tombol mouse ditekan |
SWT.MouseUp | Tombol mouse dilepaskan |
SWT.MouseMove | Mouse berpindah posisi |
SWT.MouseEnter | Mouse masuk ke wilayah klien |
SWT.MouseHover | Mouse berada di sekitar klien |
SWT.MouseExit | Mouse keluar dari wilayah klien |
SWT.MouseDoubleClick | Mouse di-double click |
SWT.Paint | Suatu widget diberi perintah untuk menggambar dirinya |
SWT.Move | Posisi suatu widget berubah |
SWT.Resize | Ukuran widget berubah |
SWT.Dispose | Widget dihapus |
SWT.Selection | Suatu aksi pemilihan dilakukan dalam widget (misalnya memilih item pada drop down list |
SWT.DefaultSelection | Ada pilihan awal pada suatu widget |
SWT.FocusIn | Widget menerima fokus dari keyboard |
SWT.FocusOut | Widget kehilangan fokus dari keyboard |
SWT.Expand | Item pada pohon dikembangkan |
SWT.Collapse | Item pada pohon ditutup |
SWT.Iconify | Jendela Shell diminimasi |
SWT.Deiconify | Jendela Shell dibuka (restore) |
SWT.Close | Jendela Shell ditutup (dengan tombol X) |
SWT.Show | Widget bisa dilihat |
SWT.Hide | Widget disembunyikan |
SWT.Modify | Teks berubah pada suatu kontrol |
SWT.Verify | Input teks sedang diverifikasi |
SWT.Activate | Widget sedang diaktifkan |
SWT.Deactivate | Widget dimatikan |
SWT.Help | User meminta pertolongan tentang suatu widget |
SWT.DragDetect | Aksi drag-and-drop dideteksi |
SWT.MenuDetect | User menekan tombol kik kanan untuk mengaktifkan menu konteks |
SWT.Arm | Item pada menu digambarkan |
SWT.Traverse | Navigasi pada keyboard dideteksi |
SWT.HardKeyDown | Tombol pada hardware ditekan (untuk perangkat genggam) |
SWT.HardKeyUp | Tombol pada hardware dilepas (untuk perangkat genggam) |
Suatu event juga bisa memiliki tipe. Artinya event yang dihasilkan merupakan objek bertipe suatu kelas, misalnya MouseEvent, bukan hanya bertipe kelas Event yang jenisnya disimpan dalam variabel tertentu. Event bertipe mengikuti pola JavaBeans standar. Kelas-kelas ini terdapat dalam paket
org.eclipse.swt.events
Tabel berikut menggambarkan perbandingan antara event bertipe dan jenis event dari event tanpa tipe.
;tr>Event Bertipe | Jenis Event Tanpa Tipe |
ArmEvent | SWT.Arm |
ControlEvent | SWT.Move SWT.Resize |
DisposeEvent | SWT.Dispose |
FocusEvent | SWT.FocusIn SWT.FocusOut |
HelpEvent | SWT.Help |
KeyEvent | SWT.KeyDown SWT.KeyUp |
MenuEvent | SWT.Hide SWT.Show |
ModifyEvent | SWT.Modify |
MouseEvent | SWT.MouseDoubleClick SWT.MouseDown SWT.MouseUp |
MouseEvent | SWT.MouseMove |
MouseEvent | SWT.MouseEnter SWT.MouseExit SWT.MouseHover |
PaintEvent | SWT.Paint |
SelectionEvent | SWT.DefaultSelection SWT.Selection |
ShellEvent | SWT.Activate SWT.Close SWT.Deactivate SWT.Iconify SWT.Deiconify |
TraverseEvent | SWT.Traverse |
TreeEvent | SWT.Collapse SWT.Expand |
VerifyEvent | SWT.Verify |
Pada versi awal SWT, hanya ada satu jenis yaitu jenis tanpa tipe. Setelah diskusi yang cukup antar beberapa programmer Eclipse, komunitas user SWT dan developernya, maka akhirnya diputuskan untuk menambahkan jenis bertipe seperti pada JavaBeans. Alasannya adalah untuk memudahkan pemrograman SWT bagi programmer yang sudah terlanjur terbiasa dengan AWT/Swing. Jenis tanpa tipe masih tetap ada seperti biasa.
Tidak ada komentar:
Posting Komentar