IF34348 - PEMROGRAMAN LANJUT EVENT 13 Oleh : Andri Heryandi, M.T.
EVENT Event adalah suatu kejadian dimana kondisi dari suatu objek berubah. Event dibuat sebagai hasil interaksi user dengan komponen GUI. Sebagai contoh adanya klik pada tombol, adanya pergerakan mouse, atau pun ketika adanya pemasukan karakter melalui keyboard. Event Handling (penanganan event) adalah suatu mekanisme yang mengendalikan event dan mementukan apa yang seharusnya dilakukan ketika event terjadi. Di Java, semua event yang terjadi akan menghasilkan sebuah class Event. Dan class yang digunakan untuk menangani event adalah Listener. Oleh : Andri Heryandi, M.T. 2
JENIS-JENIS EVENT Class-Class event yang tersedia ada berbagai macam, diantaranya : Class ActionEvent : class yang terjadi ketika terjadi penekanan tombol, atau ada double-klik. Class KeyEvent : class yang terjadi ketika memasukan karakter. Class MouseEvent : class yang terjadi ketika sebuah aksi mouse terjadi. Class WindowsEvent : class yang terjadi ketika ada perubahan status di window. Setiap jenis event memiliki method dan attribut masingmasing. Oleh : Andri Heryandi, M.T. 3
JENIS-JENIS LISTENER Event Listener merepresentasikan interface yang bertanggungjawab untuk menangani event. Jenis-jenis listener ActionListener : Listener untuk ActionEvent. KeyListener : Listener untuk KeyEvent. MouseListener : Listener untuk MouseEvent. WindowListener : Listener untuk WindowEvent. Setiap Listener dapat diimplementasikan di class anda. Setiap Listener mempunyai method yang harus diimplementasikan. Oleh : Andri Heryandi, M.T. 4
CONTOH MENANGKAP EVENT Contoh aplikasi yang belum mempunyai event. import javax.swing.*; public class DemoEvent extends JFrame{ public DemoEvent(){ super("demo Event"); setdefaultcloseoperation (JFrame.EXIT_ON_CLOSE); setsize(300,200); setvisible(true); public static void main(string[] args) { new DemoEvent(); Oleh : Andri Heryandi, M.T. 5
CONTOH MENANGKAP EVENT Tambahkan implement ke MouseListener import javax.swing.*; public class DemoEvent extends JFrame implements MouseListener{ Tambahkan import ke import java.awt.event.mouselistener; import java.awt.event.mouselistener ; import javax.swing.*; public class DemoEvent extends JFrame implements MouseListener{ Oleh : Andri Heryandi, M.T. 6
CONTOH MENANGKAP EVENT Pasti ada error di baris pembuatan class, ini dikarenakan kita belum memiliki method-method yang ada di interface MouseListener. Klik di [x] errornya, pilih Add unimplemented methods. Oleh : Andri Heryandi, M.T. 7
CONTOH MENANGKAP EVENT Secara otomatis eclipse akan membuat method-method turunan dari interface MouseListener @ O v e r r i d e p u b l i c v o i d m o u s e C l i c k e d ( M o u s e E v e n t e ) { / / T O D O A u t o - g e n e r a t e d m e t h o d s t u b @ O v e r r i d e p u b l i c v o i d m o u s e E n t e r e d ( M o u s e E v e n t e ) { / / T O D O A u t o - g e n e r a t e d m e t h o d s t u b @ O v e r r i d e p u b l i c v o i d m o u s e E x i t e d ( M o u s e E v e n t e ) { / / T O D O A u t o - g e n e r a t e d m e t h o d s t u b @ O v e r r i d e p u b l i c v o i d m o u s e P r e s s e d ( M o u s e E v e n t e ) { / / T O D O A u t o - g e n e r a t e d m e t h o d s t u b @ O v e r r i d e p u b l i c v o i d m o u s e R e l e a s e d ( M o u s e E v e n t e ) { / / T O D O A u t o - g e n e r a t e d m e t h o d s t u b Oleh : Andri Heryandi, M.T. 8
CONTOH MENANGKAP EVENT Ubahlah setiap method tersebut sesuai keperluannya. p u b l i c v o i d m o u s e C l i c k e d ( M o u s e E v e n t e ) { if(e. g e t B u t t o n ( ) = = M o u s e E v e n t. B U T T O N 1 ) S y s t e m. o u t. p r i n t l n ("T o m b o l K i r i "); else if(e. g e t B u t t o n ( ) = = M o u s e E v e n t. B U T T O N 2 ) S y s t e m. o u t. p r i n t l n ("T o m b o l T e n g a h " ) ; else if(e. g e t B u t t o n ( ) = = M o u s e E v e n t. B U T T O N 3 ) S y s t e m. o u t. p r i n t l n ("T o m b o l K a n a n "); S y s t e m. o u t. p r i n t l n ( " M o u s e d i k l i k d i p o s i s i : "+e. g e t X ( ) + ", " + e. g e t Y ( ) ) ; p u b l i c v o i d m o u s e E n t e r e d ( M o u s e E v e n t e ) { S y s t e m. o u t. p r i n t l n ( " M o u s e m a s u k "); p u b l i c v o i d m o u s e E x i t e d ( M o u s e E v e n t e ) { S y s t e m. o u t. p r i n t l n ( " M o u s e K e l u a r "); p u b l i c v o i d m o u s e P r e s s e d ( M o u s e E v e n t e ) { S y s t e m. o u t. p r i n t l n ( " M o u s e d i t e k a n " ) ; p u b l i c v o i d m o u s e R e l e a s e d ( M o u s e E v e n t e ) { S y s t e m. o u t. p r i n t l n ( " M o u s e d i l e p a s " ) ; Oleh : Andri Heryandi, M.T. 9
CONTOH MENANGKAP EVENT Tambahkan addmouselistener. public DemoEvent(){ super("demo Event"); setdefaultcloseoperation (JFrame.EXIT_ON_CLOSE); setsize(300,200); addmouselistener(this); setvisible(true); Oleh : Andri Heryandi, M.T. 10
CONTOH MENANGKAP EVENT Run. Gerakan aktivitas yang dilakukan oleh Mouse. Oleh : Andri Heryandi, M.T. 11
LATIHAN Dengan cara yang seperti tadi, silahkan pelajari Event-Event listener yang lain : ActionListener KeyListener WindowListener Oleh : Andri Heryandi, M.T. 12
MERESPON AKSI KLIK Kasus: Buatlah sebuah aplikasi untuk menghitung hasil perkalian antara 2 buah bilangan dan menampilkan hasilnya ketika tombol Hitung diklik. Sedangkan tombol Reset akan mendefaultkan bilangan 1 dan bilangan 2 dengan nilai 0. Contoh tampilan : l1 l2 l3 tombolhitung t1 t2 t3 tombolreset Oleh : Andri Heryandi, M.T. 13
MERESPON AKSI KLIK i m p o r t j a v a x. s w i n g. * ; p u b l i c c l a s s K a l k u l a t o r e x t e n d s J F r a m e { p r i v a t e J B u t t o n t o m b o l H i t u n g, t o m b o l R e s e t ; p r i v a t e J L a b e l l 1, l 2, l 3 ; p r i v a t e J T e x t F i e l d t 1, t 2, t 3 ; p u b l i c K a l k u l a t o r ( ) { s u p e r ( " K a l k u l a t o r " ) ; s e t D e f a u l t C l o s e O p e r a t i o n ( J F r a m e. E X I T _ O N _ C L O S E ); s e t S i z e ( 3 0 0, 1 9 0 ) ; s e t L a y o u t ( n u l l ) ; l 1 = n e w J L a b e l ("B i l a n g a n 1 " ) ; l 1. s e t B o u n d s ( 1 0, 1 0, 9 0, 2 0 ) ; l 2 = n e w J L a b e l ("B i l a n g a n 2 " ) ; l 2. s e t B o u n d s ( 1 0, 4 0, 9 0, 2 0 ) ; l 3 = n e w J L a b e l ("H a s i l " ) ; l 3. s e t B o u n d s ( 1 0, 7 0, 9 0, 2 0 ) ; t 1 = n e w J T e x t F i e l d ( ) ; t 1. s e t B o u n d s ( 1 0 0, 1 0, 1 7 0, 2 0 ) ; t 2 = n e w J T e x t F i e l d ( ) ; t 2. s e t B o u n d s ( 1 0 0, 4 0, 1 7 0, 2 0 ) ; t 3 = n e w J T e x t F i e l d ( ) ; t 3. s e t B o u n d s ( 1 0 0, 7 0, 1 7 0, 2 0 ) ; t o m b o l H i t u n g = n e w J B u t t o n ("H i t u n g "); t o m b o l H i t u n g. s e t B o u n d s ( 1 0 0, 1 0 0, 8 0, 2 0 ) ; t o m b o l R e s e t = n e w J B u t t o n ( " R e s e t " ) ; t o m b o l R e s e t. s e t B o u n d s ( 1 9 0, 1 0 0, 8 0, 2 0 ) ; a d d ( l 1 ) ; a d d ( l 2 ) ; a d d ( l 3 ) ; a d d ( t 1 ) ; a d d ( t 2 ) ; a d d ( t 3 ) ; a d d ( t o m b o l H i t u n g ) ; a d d ( t o m b o l R e s e t ); s e t V i s i b l e ( t r u e ) ; p u b l i c s t a t i c v o i d m a i n ( S t r i n g [ ] a r g s ){ n e w K a l k u l a t o r (); Oleh : Andri Heryandi, M.T. 14
MERESPON AKSI KLIK Respons ketika tombolhitung diklik. tombolhitung.addactionlistener (new ActionListener(){ public void actionperformed(actionevent e) { ); double b1,b2,b3; b1=double.parsedouble(t1.gettext()); b2=double.parsedouble(t2.gettext()); b3=b1*b2; t3.settext(double.tostring(b3)); Tambahkan potongan source code di atas ke dalam aplikasi. Boleh ditempatkan sebelum setvisible. Oleh : Andri Heryandi, M.T. 15
MERESPON AKSI KLIK Respons ketika tombolreset diklik. tombolreset.addactionlistener (new ActionListener(){ public void actionperformed(actionevent e) { ); t1.settext("0"); t2.settext("0"); t3.settext("0"); t1.requestfocus(); Tambahkan potongan source code di atas didalam aplikasi. Boleh ditempatkan sebelum setvisible. Oleh : Andri Heryandi, M.T. 16
MERESPON AKSI KLIK Hasil Run. TombolHitung diklik TombolReset diklik Oleh : Andri Heryandi, M.T. 17