GUI Event Handling
Pada modul ini, Anda akan belajar bagaimana mengendalikan events triggered ketika user berinteraksi dengan aplikasi GUI Anda. Setelah menyelesaikan modul ini, Anda akan dapat mengembangkan aplikasi GUI yang dapat merespon interaksi user.
Pada akhir pembahasan, diharapkan pembaca dapat :
1. Menerangkan komponen-komponen delegation event model
2. Mengerti bagaimana delegation event model bekerja
3. Menciptakan aplikasi GUI yang berinteraksi dengan user
4. Mendiskusikan manfaat dari class-class adapter
5. Mendiskusikan keuntungan-keuntungan dari menggunakan inner dan anonymous class
Delegation Event Model
Delegasi event model menguraikan bagaimana program Anda dapat merespon interaksi dari user. Untuk memahami model, pertama-tama mari kita pelajari melalui tiga komponen utamanya.
-
Event Source
Event source mengacu pada komponen GUI yang meng-generate event. Sebagai contoh, jika user menekan tombol, event source dalam hal ini adalah tombol.
-
Event Listener/Handler
Event listener menerima berita dari event-event dan proses-proses interaksi user. Ketika tombol ditekan, listener akan mengendalikan dengan menampilkan sebuah informasi yang berguna untuk user.
-
Event Object
Ketika sebuah event terjadi (misal, ketika user berinteraksi dengan komponen GUI), sebuah object event diciptakan. Object berisi semua informasi yang perlu tentang event yang telah terjadi. Informasi meliputi tipe dari event yang telah terjadi, seperti ketika mouse telah di-klik. Ada beberapa class event untuk kategori yang berbeda dari user action. Sebuah event object mempunyai tipe data mengenai salah satu dari class ini.
Pada awalnya, sebuah listener seharusnya diregistrasikan dengan sebuah source sehingga dapat menerima informasi tentang event-event yang terjadi pada source tersebut. Hanya listener yang sudah teregistrasi yang dapat menerima pemberitahuan event-event. Ketika telah teregistrasi, sebuah listener hanya tinggal menunggu sampai event terjadi.
Ketika sesuatu terjadi dengan event source, sebuah event object akan menguraikan event yang diciptakan. Event kemudian ditembak oleh source pada listener yang teregistrasi.
Saat listener menerima sebuah event object (pemberitahuan) dari source, dia akan bekerja. Menerjemahkan pemberitahuan dan memproses event yang terjadi.
Registrasi Listeners
Event source mendaftarkan sebuah listener melalui method add<Type>Listener.
void add<Type>Listener(<Type>Listener listenerObj)
<Type> tergantung pada tipe dari event source. Dapat berupa Key, Mouse, Focus, Component, Action dan lainnya. Beberapa listeners dapat diregistrasi dengan satu event source untuk menerima pemberitahuan event.
Listener yang telah teregistrasi dapat juga tidak diregistrasikan lagi menggunakan method remove<Type>Listener.
void remove<Type>Listener(<Type>Listener listenerObj)
Class-Class Event
Sebuah event object mempunyai sebuah class event sebagai tipe data acuannya. Akar dari hirarki class event adalah class EventObject, yang dapat ditemukan pada paket java.util. Immediate subclass dari class EventObject adalah class AWTEvent. Class AWTEvent didefinisikan pada paket java.awt. Itu merupakan akar dari semua AWT-based events.
Berikut ini beberapa dari class-class AWT event.
Tabel 1.2: Class-Class Event
Event Listeners
Event listeners adalah class yang mengimplementasikan interfaces <Type>Listener.
Tabel di bawah menunjukkan beberapa listener interfaces yang biasanya digunakan.
Tabel 1.3: Event Listeners
Method ActionListener
Interface ActionListener hanya terdiri dari satu method.
Tabel 1.3.1: Method ActionListener
Method MouseListener
Tabel 1.3.2: Method-Method MouseListener
Method-Method MouseMotionListener
MouseMotionListener mempunyai dua method untuk diimplementasikan.
Tabel 1.3.3: The MouseMotionListener methods
Method-Method WindowListener
Di bawah ini method-method dari interface WindowListener.
Tabel 1.3.4: Method-Method WindowListener
Petunjuk untuk Menciptakan Aplikasi Handling GUI Events
Berikut ini langkah-langkah yang Anda butuhkan untuk mengingat ketika ingin membuat aplikasi GUI dengan event handling.
-
Buatlah sebuah class yang menguraikan dan membuat suatu tampilan dari aplikasi
GUI Anda.
-
Buatlah sebuah class yang menerapkan interface listener yang sesuai. Class ini boleh
mengacu pada class yang sama seperti pada langkah awal.
-
Dalam menerapkan class, gunakan semua method-method dengan interface listener
yang sesuai. Uraikan masing-masing method bagaimana Anda ingin mengendalikan
event-event. Anda dapat memberikan implementasi kosong untuk method yang tidak
ingin Anda gunakan.
-
Daftarkan object listener, instansiatiate dari class listener pada langkah 2, dengan
source component menggunakan method add<Type>Listener.
Contoh Mouse Events
Contoh Menutup Window
Class-class Adapter Class
Menerapkan semua method dari interface yang semuanya akan membutuhkan banyak pekerjaan. Di satu sisi, Anda terkadang lebih sering tertarik menerapkan hanya beberapa method dari interface saja. Untungnya, Java menyediakan untuk kita class- class adapter yang menerapkan semua method dari masing-masing listener interface dengan lebih dari satu method. Implementasi dari method-method semuanya adalah kosong.
Close Window Example
Inner Class dan Anonymous Inner Class
Bagian ini memberi Anda tinjauan ulang atas konsep yang sudah Anda pelajari di pelajaran pemrograman pertama. Inner class dan anonymous inner class sangatlah bermanfaat untuk GUI event handling.
Inner Class
Inner class, seperti namanya, adalah sebuah class yang dideklarasikan di dalam class lain. Kegunaan inner classes akan dapat membantu Anda menyederhanakan program, terutama dalam event handling seperti yang ditunjukkan pada contoh.
Contoh Menutup Window
Anonymous Inner Class
Anonymous inner class adalah inner class tanpa nama. Kegunaan dari anonymous inner class akan menyederhanakan kode-kode Anda lebih lanjut. Di bawah ini merupakan modifikasi dari contoh bagian sebelumnya.
Contoh Menutup Window
Latihan
Tic-Tac-Toe
Extend program papan Tic-Tac-Toe yang telah Anda kembangkan sebelumnya dan
tambahkan event handlers ke kode tersebut untuk membuat program berfungsi penuh.
Permainan Tic-Tac-Toe dimainkan dengan dua pemain. Pemain mengambil giliran
mengubah. Setiap giliran, pemain dapat memilih kotak pada papan. Ketika kotak dipilih,
kotak ditandai oleh simbol pemain (O dan X biasanya digunakan sebagai simbol).
Pemain yang sukses menaklukkan 3 kotak membentuk garis horisontal, vertikal, atau
diagonal, memenangkan permainan. Permainan akan berakhir ketika pemain menang
atau ketika semua kotak telah terisi.
your good