GUI Event Handling Event kejadian Event kejadian yang

  • Slides: 35
Download presentation
GUI Event Handling

GUI Event Handling

Event (kejadian) • Event : kejadian yang muncul ketika user berinteraksi dengan aplikasi. •

Event (kejadian) • Event : kejadian yang muncul ketika user berinteraksi dengan aplikasi. • Contoh : – klik mouse – klik tombol – mouse bergerak di atas form – memilih dari combo box/list – klik kanan/kiri mouse di atas komponen, – dll

Event Handling • Proses untuk memberikan respon thd event. • Di Java, mekanisme event

Event Handling • Proses untuk memberikan respon thd event. • Di Java, mekanisme event handling dikenal dg Delegation of Event model.

Delegation of Event Model • Interaksi antara user dan komponen GUI • Untuk mendeskripsikan

Delegation of Event Model • Interaksi antara user dan komponen GUI • Untuk mendeskripsikan bagaimana program merespon interaksi user • Bagian-bagian penting: – event source – event listener / Handler – event object

Event Source • Komponen GUI yang membuat event atau tempat terjadinya event. • yaitu

Event Source • Komponen GUI yang membuat event atau tempat terjadinya event. • yaitu berupa komponen-komponen visual, seperti : button, combo box, text field, etc

Event Listener / Handler • Objek penerima & pengolah event • Menerima dan menangani

Event Listener / Handler • Objek penerima & pengolah event • Menerima dan menangani event, mengandung business logic • Contoh: menampilkan informasi penting ke user, melakukan komputasi matematis, dan lain sebagainya.

Event Object • Objek yang terbentuk saat terjadi event • Yaitu ketika user berinteraksi

Event Object • Objek yang terbentuk saat terjadi event • Yaitu ketika user berinteraksi dengan komponen GUI. Seperti : tekan button, ketik di text field, dll. • Mengandung semua informasi yang berhubungan dengan event yang muncul, seperti : Tipe event yang muncul, asal dari event tersebut. • Direpresentasikan oleh class Event

Control Flow “Delegasi Event Model”

Control Flow “Delegasi Event Model”

Penanganan Event • Listener harus diregistrasi di event source • Sekali diregistrasi, listener menunggu

Penanganan Event • Listener harus diregistrasi di event source • Sekali diregistrasi, listener menunggu hingga event muncul • Kapan event muncul? • Object event dibuat oleh event source • Object event dikirim oleh event source ke listener yang teregister (dengan memanggil method milik event listener yang parameter sama dengan object event) • Sekali listener menerima object event dari event source : • mengartikan event • memproses event yang muncul

Registrasi Listener Berdasarkan Event Source • Registrasi listener: void add<Type>Listener (<Type>Listener listener. Obj) Dimana:

Registrasi Listener Berdasarkan Event Source • Registrasi listener: void add<Type>Listener (<Type>Listener listener. Obj) Dimana: <Type> tergantung pada jenis event source (mis: Key, Mouse, Focus, Component, Action, dll) • Satu event source bisa meregistrasi beberapa listener • Menghapus listener yang sudah teregister: void remove<Type>Listener (<Type>Listener listener. Obj)

Komponen pada event handling 1. Kelas untuk menangani event harus mengimplementasikan (kelas/interface) event listener.

Komponen pada event handling 1. Kelas untuk menangani event harus mengimplementasikan (kelas/interface) event listener. Cara lain adlh dg membuat kelas turunan dari kelas yang telah mengimplementasikan salah satu event listener. 2. Kelas yang mengimplementasikan listener harus mengimplementasikan seluruh method yang ada di kelas/interface listener. 3. Listener harus didaftarkan ke dalam objek yang akan berperan sbg event source.

Macam-macam Event Source Keterangan Button Membangkitkan Action. Event pd saat button diklik Checkbox Membangkitkan

Macam-macam Event Source Keterangan Button Membangkitkan Action. Event pd saat button diklik Checkbox Membangkitkan Item. Event pd saat di-check atau un-check Choice Membangkitkan Item. Event pd saat pilihan diubah List Membangkitkan Action. Event pd saat sebuah item di-doubleclick dan membangkitkan Item. Event pd saat item dipilih/di-check maupun diuncheck Item Menu Membangkitkan Action. Event pd saat item menu diklik dan membangkitkan Item. Event pd saat item menu di-check maupun diuncheck Scrollbar Membangkitkan Adjustment. Event pd saat scrollbar diubah Text Membangkitkan Text. Event pd saat user memasukkan karakter pd komponen textarea atau textfield Window Membangkitkan Window. Event pd saat sebuah window atau frame diaktivasi, ditutup, dinonaktifkan, di-minimize, di-maximize, dibuka, dan dikeluarkan

Class-class Event • Class Event. Object : terletak di package java. util • Class

Class-class Event • Class Event. Object : terletak di package java. util • Class AWTEvent : terletak di package java. awt Merupakan subclass dari Event. Object. Merupakan root dari semua event berbasis AWT. • Penamaan nama subclass: <Type>Event

Class-class event Event Class Keterangan Action. Event Dibangkitkan pada saat objek button di-klik, item

Class-class event Event Class Keterangan Action. Event Dibangkitkan pada saat objek button di-klik, item list di-doubleclick, maupun item menu dipilih Adjustment. Event Dibangkitkan pada saat objek scrollbar diubah Component. Event Dibangkitkan pada saat sebuah komponen disembunyikan, dipindahkan, diubah ukurannya, maupun diset mjd visible Container. Event Dibangkitkan pd saat sebuah komponen ditambahkan/dipiindahkan ke/dari sebuah container Focus. Event Dibangkitkan pada saat sebuah komponen memperole atau kehilangan fokus keyboard Input. Event Kelas induk yg mrpkn kelas abstrak dr semua kelas yg termsk ke dlm event input Item. Event Dibangkitkan pd saat sebuah item dlm list atau checkbox diklik; jg tjd saat item-nya dibuat, dan pd saat item menu di-check maupun un-check Key. Event Dibangkitkan pd saat input dilakukan melalui keyboard Mouse. Event Dibangkitkan pd saat mouse di-drag, dipindahkan, diklik, ditekan, maupun dilepas; jg tjd pd saat mouse masuk atau keluar dari sebuah komponen Text. Event Dibangkitkan pd saat teks yg berada dalam komponen textarea atau textfield diubah Window. Event Dibangkitkan pd saat window atau form diaktivasi, ditutup, di-minimize, dimaximize, dibuka, atau dikeluarkan

Event Listener • Class yang mengimplementasi interface : <Type>Listener • Berikut adalah daftar interfacenya:

Event Listener • Class yang mengimplementasi interface : <Type>Listener • Berikut adalah daftar interfacenya:

Beberapa Interface Listener Tipe Event Action. Listener Keterangan Mendefinisikan sebuah method untuk menangani tjdnya

Beberapa Interface Listener Tipe Event Action. Listener Keterangan Mendefinisikan sebuah method untuk menangani tjdnya event Action. Event void action. Performed (Action. Event e) Mouse. Listener Mendefinisikan 5 method untuk menangani tjdnya event Mouse. Event void void Window. Listener mouse. Clicked(Mouse. Event e) mouse. Entered(Mouse. Event e) mouse. Exited(Mouse. Event e) mouse. Pressed(Mouse. Event e) mouse. Released(Mouse. Event e) Mendefinisikan 7 method untuk menangani tjdnya event Mouse. Event void void window. Activated (Window. Event e) window. Closing (Window. Event e) window. Deactivated (Window. Event e) window. Deiconified (Window. Event e) window. Iconified (Window. Event e) window. Opened (Window. Event e)

Action. Listener • Hanya memiliki satu method: public void action. Performed(Action. Event e) •

Action. Listener • Hanya memiliki satu method: public void action. Performed(Action. Event e) • Merupakan handler untuk Action. Event yang terjadi.

Mouse. Listener public void mouse. Clicked(Mouse. Event e) • memiliki handler untuk event ketika

Mouse. Listener public void mouse. Clicked(Mouse. Event e) • memiliki handler untuk event ketika mouse di-click (tekan dan lepas) public void mouse. Entered(Mouse. Event e) • untuk menangani kasus dimana mouse memasuki area component public void mouse. Exited(Mouse. Event e) • untuk menangani kasus dimana mouse keluar area component public void mouse. Pressed(Mouse. Event e) • dipanggil jika mouse ditekan public void mouse. Released(Mouse. Event e) • dipanggil jika mouse dilepas

Mouse. Motion. Listener public void mouse. Dragged(Mouse. Event e) • dipanggil jika mouse ditekan

Mouse. Motion. Listener public void mouse. Dragged(Mouse. Event e) • dipanggil jika mouse ditekan pada suatu component kemudian memindah component tsb (dragged). Dipanggil beberapa kali selama mouse di-dragged public void mouse. Moved(Mouse. Event e) • dipanggil jika mouse digerakkan di component tanpa menekan mouse. Dipanggil beberapa kali ketika mouse digerak-gerakkan

Window. Listener public void window. Opened(Window. Event e) • dipanggil ketika object Window dibuka

Window. Listener public void window. Opened(Window. Event e) • dipanggil ketika object Window dibuka public void window. Closing(Window. Event e) • dipanggil ketika user mencoba untuk menutup window dari system menu public void window. Closed(Window. Event e) • dipanggil ketika window ditutup, digunakan untuk membebaskan resource yang digunakan oleh window public void window. Activated(Window. Event e) • dipanggil ketika window dijadikan active window public void window. Iconified(Window. Event e) • dipanggil ketika window di-minimize public void window. Deiconified(Window. Event e) • dipanggil ketika window diubah dari minimize ke normal

Langkah-Langkah Membuat Aplikasi GUI dengan Event Handling 1. Membuat class GUI • Mengatur tampilan

Langkah-Langkah Membuat Aplikasi GUI dengan Event Handling 1. Membuat class GUI • Mengatur tampilan aplikasi GUI (components dan layout-nya) 2. Membuat class event listener (class yang mengimplementasi interface listener yang tepat) • Override semua method yang dari interface listener yang dibutuhkan • Tulislah program di masing-masing method sesuai kebutuhan anda • Untuk method yang tidak dinginkan, kosongi saja bagian implementasinya 3. Registrasikan object listener ke event source • Object adalah instansiasi dari class listener di langkah ke-2 • Gunakan method add<Type>Listener untuk menambahkannya

Contoh Event Handling Class Event Listener Registrasi Object Listener Override Method

Contoh Event Handling Class Event Listener Registrasi Object Listener Override Method

Contoh Mouse Event

Contoh Mouse Event

Contoh Mouse Event

Contoh Mouse Event

Contoh Mouse Event

Contoh Mouse Event

Contoh “Close Window” import java. awt. *; import java. awt. event. *; class Close.

Contoh “Close Window” import java. awt. *; import java. awt. event. *; class Close. Frame extends Frame implements Window. Listener { Label label; Close. Frame(String title) { super(title); label = new Label("Close the frame. "); this. add. Window. Listener(this); } void launch. Frame() { set. Size(300, 300); set. Visible(true); } // Implement methods of listener interface public void window. Activated(Window. Event e) { } public void window. Closing(Window. Event e) { set. Visible(false); System. exit(0); }

Contoh “Close Window”

Contoh “Close Window”

Class Adaptor • Mengapa menggunakan Class Adaptor? • Mengimplementasi semua method di interface tidak

Class Adaptor • Mengapa menggunakan Class Adaptor? • Mengimplementasi semua method di interface tidak praktis • Hanya beberapa method saja yang dibutuhkan Adapter class • Class di Java : Mengimplementasi semua method dari setiap interface listener yang memiliki lebih dari satu method Implementasi dari sebuah methodnya kosong

Class Adapter: Contoh “Close Window”

Class Adapter: Contoh “Close Window”

Class Adapter: Contoh “Close Window”

Class Adapter: Contoh “Close Window”

Inner Class • Class yang dideklarasikan di dalam class lainnya • Mengapa menggunakan inner

Inner Class • Class yang dideklarasikan di dalam class lainnya • Mengapa menggunakan inner class? – Supaya program lebih simple – Terutama di event handling

Class Adapter: Contoh “Close Window” dengan Inner Class

Class Adapter: Contoh “Close Window” dengan Inner Class

Anonymous Inner Class • Class yang tidak memiliki nama • Mengapa? – Lebih simple

Anonymous Inner Class • Class yang tidak memiliki nama • Mengapa? – Lebih simple daripada inner class – Terutama di event handling

Class Adapter: Contoh “Close Window” dengan Anonymous Class

Class Adapter: Contoh “Close Window” dengan Anonymous Class