Bab Tujuan. 8.2 Delegation Event Model

dokumen-dokumen yang mirip
DIK-020 Pemograman Berorientasi Objek 5/24/2012

GUI Event Handling. 5. Mendiskusikan keuntungan-keuntungan dari menggunakan inner dan anonymous class

GUI Event Handling. minggu 13. Wednesday, 16 May 12

1.Tujuan. 2. Latar Belakang

GUI Event Handling 1

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN JAVA 2

Membuat User Interface dengan Swing. Program yang dibuat sebelumnya selalu berbasis console User lebih senang berinteraksi dengan

IF PEMROGRAMAN LANJUT EVENT. Oleh : Andri Heryandi, M.T.

A. TUJUAN PEMBELAJARAN

Bab 1 Review Konsep Dasar dalam Java

GUI & Event Handling. Viska Mutiawani, M.Sc. 1 Viska Mutiawani - Informatika FMIPA Unsyiah

GUI & Event Handling. Viska Mutiawani, M.Sc

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

Modul 9: antarmuka grafis (GUI) dalam window

Materi : GUI AWT & SWING.

AWT (ABSTRACT WINDOWS TOOLKITS)

Sendy Ferdian Sujadi

BAB IX. USER INTERFACE

Membuat Menu Login Sederhana [Full Coding]

Percobaan 7 GUI(Graphical User Interface )

Event Listener. Beberapa EventListener yang akan diberikan contoh pada slide ini antara lain:

1. Latar Belakang 2. Tujuan

2. Manakah diantara pilihan berikut ini yang merupakan bagian dari event delegation model? Sebuah komponen yang menampilkan message

BAB I PENDAHULUAN. Listing 1.1 menunjukkan program GUI Java sederhana menggunakan AWT. import java.awt.*; import java.awt.event.*;

BAB IX MEMBUAT FORM 9.1 Membuat Form Secara Konvensional

Graphics Programming

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK (JAVA) PERTEMUAN 11. GUI, Event Handling, Exception Handling

GRAPHICAL USER INTERFACE (GUI)

Materi 5 Pemrograman Visual

A. TUJUAN PEMBELAJARAN

Membangun GUI (dengan AWT & Swing) OOP Java

Obyek Lanjutan (Java)


1. Mana dari adapter berikut ini yang merupakan class adapter yang benar didalam Java. ComponentAdapter

MODUL PRAKTIKUM KE 3 A.

Dasar Perancangan Graphical User Interface

Anonymous Inner Class

MODUL PRAKTIKUM BERORIENTASI OBJEK NINF615 SEMESTER GASAL 2016/2017 PROGRAM STUDI S1 TEKNIK INFORMATIKA

GUI (Grapichal User Interface)

PERTEMUAN VI AWT DAN SWING TUJUAN PRAKTIKUM. 1. Praktikan mengenal pembuatan GUI pada Java. 2. Praktikan memahami action pada objek dalam Java.

Gambar 1. Deklarasi Interface MouseListener

PENGENALAN JAVA GUI PROGRAMMING

MODUL 7 - EXCEPTION HANDLING

Pemrograman Lanjut. Intro to GUI (Graphical User Interface)

J2ME GUI dan Manajemen Event

Pemrograman Web Lanjut

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN 2

Modul 08. User Interface 01

Slide 6: Writing Classes

BAB 5 Mendapatkan Input dari Keyboard

TPI4202 e-tp.ub.ac.id. Lecture 4 Mas ud Effendi

PAKET (PACKAGE) 20 Januari 2012

mouse dan keyboard yang akan memberikan dampak atau perubahan kepada suatu objek. Hampir keseluruhan game komputer menggunakan dua item ini,

Modul Praktikum 8 BAB VIII LISTENER/EVENT HANDLER. Departemen Teknologi Informasi Telkom Applied Science School 2013.

INSTRUKSI PENCABANGAN

Score: Persentage: % ~ u ~ Generated by Foxit PDF Creator Foxit Software For evaluation only.

Fajar Yusran Zebua DASAR ANIMASI

Praktikum JTable. Gambar 1

GUI, Ev e Ev n e t n Handling, Ex ception Handling in Java

Abstract Window Toolkit

BAB 5 Mendapatkan Input dari Keyboard

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN JAVA 2

Membuat Frame, Label, TextField dan Button di Java [Full Coding]

BAB 2 INPUT DARI KEYBOARD

Belajar Set Currency Format di TextField Java

BAB I PROJECT NETBEANS DAN GUI SEDERHANA

Pertemuan 2 (2) : Membuat Class dan mengakses Anggota Class

A. TUJUAN PEMBELAJARAN

KELAS INNER, KELAS ABSTRAK, DAN INTERFACE. 16 th week Estu Sinduningrum ST,MT

Pemrograman Berorientasi Obyek Lanjut (IT251) Ramos Somya, S.Kom., M.Cs.

Modul Bahasa Pemrograman 1

MODUL III ARRAYLIST TUGAS PENDAHULUAN

Pemrograman Java III

3/31/2011. Tujuan. Inheritance, Polymorphism,& Interfaces. Inheritance / pewarisan. Inheritance / pewarisan. Inheritance / pewarisan

PERTEMUAN 1 Membuat Project & Komponen Swing [PBO II JAVA] dosen : SOPINGI, S.Kom

PEMROGRAMAN I. By : Sri Rezeki Candra Nursari

Program Penghitungan II Dengan Java

KASUS INHERITANCE. (Window, Multithreading dan Applet)

LAPORAN TUGAS AKHIR APLIKASI KALKULATOR BERBASIS JAVA

1. Manakah jawaban yang benar,pada saat Anda mengcompile dan menjalankan class berikut ini:

PEMROGRAMAN BERORIENTASI OBJEK

BAB 3 Mengenali Lingkup Pemrograman Anda

BAGIAN XIII GRAPHICAL USER INTERFACE DENGAN SWING. Praktikum I : Menggunakan JFrame, JTextField, JLabel dan JButton

Inheritance (Pewarisan) Pengertian dasar inheritance

Chapter 10 Polimorphism

Pemrograman Java III

Modul 2. [access specifier] [tipe data] [nama variabel];

Penggunaan Netbeans IDE, Hello World, variable dan Operator aritmetika.

Tutorial A Menggambar Bendera Merah Putih Pada Frame

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

BAB 3 Mengenali Lingkup Pemrograman Anda

Membuat Kalkulator dengan Java

Modul Praktikum 1 Pemograman Berorientasi Objek

MODUL 3. Classes and Objects (part I)

PEMROGRAMAN BERORIENTASI OBJEK

SOAL UAS Mata Kuliah : Pemrograman Berorientasi Objek Lanjutan

PENGENALAN FLASH DAN ACTIONSCRIPT 3.0

Modul Praktikum Pemrograman

Praktikum. PBO (Kelas K) Oleh : MOHAMMAD SHOLIKIN

Modul 8: awt. Setelah mengikuti mata kuliah ini mahasiswa dapat membuat program sederhana dalam lingkungan window. Modul 8 - awt 1

Transkripsi:

Bab 8 GUI Event Handling 8.1 Tujuan 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 merespon interaksi user. Setelah menyelesaikan modul ini, Anda diharapkan mampu: 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 8.2 Delegation Event Model Delegasi event model menguraikan bagaimana program Anda dapat merespon interaksi dari user. Untuk memahami model, mari kita pelajari pertama-tama dengan tiga komponen utamanya. 1. Event Source The event source mengacu pada komponen GUI yang men-generate event. Sebagai contoh, jika user menekan tombol, event source dalam hal ini adalah tombol. 2. Event Listener/Handler The 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. 3. Event Object Ketika sebuah event terjadi (misal, ketika user berinteraksi dengan komponen GUI), sebuah objek event diciptakan. Objek 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 tentang salah satu dari class ini. Pengenalan Pemrograman 2 1

Di bawah ini adalah delegation event model. Gambar 8.1: Delegation Event Model Pada awalnya, sebuah listener seharusnya diregistrasikan dengan sebuah source sehingga dapat menerima informasi tentang event-event yang terjadi pada source tersebut. Hanya listeners 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 listeners yang teregistrasi. Saat listener menerima sebuah event object (pemberitahuan) dari source, dia akan bekerja. Menerjemahkan pemberitahuan dan memproses event yang terjadi. Pengenalan Pemrograman 2 2

8.2.1 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 remove<type>listener methods. void remove<type>listener(<type>listener listenerobj) 8.3 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 AWTbased events. Berikut ini beberapa dari class-class AWT event. Class Event Deskripsi ComponentEvent Extends AWTEvent. Dijalankan ketika sebuah komponen dipindahkan, di-resize, dibuat visible atau hidden. InputEvent ActionEvent ItemEvent KeyEvent MouseEvent TextEvent WindowEvent Extends ComponentEvent. Abstrak root class event untuk semua komponen-level input class-class event. Extends AWTEvent. Dijalankan ketika sebuah tombol ditekan, melakukan double-klik daftar item, atau memilih sebuah menu. Extends AWTEvent. Dijalankan ketika sebuah item dipilih atau dideselect oleh user, seperti sebuah list atau checkbox. Extends InputEvent. Dijalankan ketika sebuah key ditekan, dilepas atau diketikkan. Extends InputEvent. Dijalankan ketika sebuah tombol mouse ditekan, dilepas, atau di-klik (tekan dan lepas), atau ketika sebuah kursor mouse masuk atau keluar dari bagian visible dari komponen. Extends AWTEvent. Dijalankan ketika nilai dari text field atau text area dirubah. Extends ComponentEvent. Dijalankan sebuah objek Window dibuka, ditutup, diaktifkan, nonaktifkan, iconified, deiconified, atau ketika focus ditransfer kedalam atau keluar window. Tabel 1.2: Class-Class Event Catatan, bahwa semua subclass-subclass AWTEvent mengikuti konvensi nama ini: <Type>Event Pengenalan Pemrograman 2 3

8.4 Event Listeners Event listeners adalah class yang mengimplementasikan interfaces <Type>Listener. Tabel di bawah menunjukkan beberapa listener interfaces yang biasanya digunakan. Event Listeners ActionListener MouseListener MouseMotionListener WindowListener Deskripsi Bereaksi atas perubahan mouse atau atau keyboard. Bereaksi atas pergerakan mouse. Interface MouseMotionListener mendukung MouseListener. Menyediakan method-method yang akan memantau pergerakan mouse,seperti drag dan pemindahan mouse. Bereaksi atas perubahan window. Tabel 1.3: Event Listeners 8.4.1 Method ActionListener Interface ActionListener hanya terdiri dari satu method. ActionListener Method public void actionperformed(actionevent e) Mengendalikan ActionEvent e yang terjadi. 8.4.2 Method MouseListener Tabel 1.3.1: Method ActionListener Di bawah ini adalah method-method MouseListener yang seharusnya digunakan dalam penerapan class. MouseListener Methods public void mouseclicked(mouseevent e) Dipanggil pada saat tombol mouse di click (seperti tekan dan lepas). public void mouseentered(mouseevent e) Dipanggil pada saat kursor mouse memasuki area komponen. public void mouseexited(mouseevent e) Dipanggil pada saat kursor mouse meninggalkan area komponen. public void mousepressed(mouseevent e) Dipanggil pada saat tombol mouse ditekan di atas komponen public void mousereleased(mouseevent e) Dipanggil pada saat tombol mouse dilepas di atas komponen Tabel 1.3.2: Method-Method MouseListener Pengenalan Pemrograman 2 4

8.4.3 Method-Method MouseMotionListener MouseMotionListener mempunyai dua method untuk diimplementasikan. MouseListener Methods public void mousedragged(mouseevent e) Digunakan untuk memantau pergerakan mouse yang melintasi objek pada saat tombol mouse ditekan. Tindakan ini persis sama dengan tindakan pada saat memindahkan sebuah window. public void mousemoved(mouseevent e) Digunakan untuk memantau pergerakan mouse pada saat mouse melintasi area suatu objek. Pada saat ini tidak ada mouse yang ditekan, hanya memindahkan pointer mouse melalui objek. Tabel 1.3.3: The MouseMotionListener methods 8.4.4 Method-Method WindowListener Di bawah ini method-method dari interface WindowListener. WindowListener Methods public void windowopened(windowevent e) Dipanggil pada saat objek window dibuka (pertama kali window dibuat tampil). public void windowclosing(windowevent e) Dipanggil pada saat user mencoba untuk menutup objek Window dari menu sistem objek. public void windowclosed(windowevent e) Dipanggil pada saat objek Window ditutup setelah memanggil penempatan (misal, release dari resource-resource yang digunakan oleh source) pada objek. public void windowactivated(windowevent e) Dilibatkan ketika objek Window adalah window yang aktif (window masih dipakai). public void windowdeactivated(windowevent e) Dilibatkan ketika objek Window tidak lagi merupakan window yang aktif. public void windowiconified(windowevent e) Dipanggil ketika objek Window di-minimize. public void windowdeiconified(windowevent e) Dipanggil ketika objek Window kembali setelah di-minimize ke keadaan normal. Tabel 1.3.4: Method-Method WindowListener Pengenalan Pemrograman 2 5

8.4.5 Petunjuk untuk Menciptakan Aplikasi Handling GUI Events Berikut ini langkah-langkah yang Anda butuhkan untuk mengingat ketika ingin membuat aplikasi GUI dengan event handling. 1. Buatlah sebuah class yang menguraikan dan menampilkan tampilan dari aplikasi GUI Anda. 2. Buatlah sebuah class yang menerapkan interface listener yang sesuai. Class ini boleh mengacu pada class yang sama seperti pada langkah awal. 3. Dalam menerapkan class, gunakan semua methods dengan interface listener yang sesuai. Uraikan masing-masing method bagaimana Anda ingin mengendalikan eventevent. Anda dapat memberikan implementasi kosong untuk method yang tidak ingin Anda gunakan. 4. Daftarkan objek listener, instansiasi dari class listener pada langkah 2, dengan source component menggunakan method add<type>listener. 8.4.6 Contoh Mouse Events import java.awt.*; import java.awt.event.*; public class MouseEventsDemo extends Frame implements MouseListener, MouseMotionListener { TextField tf; public MouseEventsDemo(String title){ super(title); tf = new TextField(60); addmouselistener(this); public void launchframe() { /* Menambah komponen ke frame */ add(tf, BorderLayout.SOUTH); setsize(300,300); setvisible(true); public void mouseclicked(mouseevent me) { String msg = "Mouse clicked."; public void mouseentered(mouseevent me) { String msg = "Mouse entered component."; public void mouseexited(mouseevent me) { String msg = "Mouse exited component."; public void mousepressed(mouseevent me) { String msg = "Mouse pressed."; public void mousereleased(mouseevent me) { String msg = "Mouse released."; Pengenalan Pemrograman 2 6

public void mousedragged(mouseevent me) { String msg = "Mouse dragged at " + me.getx() + "," + me.gety(); public void mousemoved(mouseevent me) { String msg = "Mouse moved at " + me.getx() + "," + me.gety(); public static void main(string args[]) { MouseEventsDemo med = new MouseEventsDemo("Mouse Events Demo"); med.launchframe(); 8.4.7 Contoh Menutup Window import java.awt.*; import java.awt.event.*; class CloseFrame extends Frame implements WindowListener { Label label; CloseFrame(String title) { super(title); label = new Label("Close the frame."); this.addwindowlistener(this); void launchframe() { setsize(300,300); setvisible(true); public void windowactivated(windowevent e) { public void windowclosed(windowevent e) { public void windowclosing(windowevent e) { setvisible(false); System.exit(0); public void windowdeactivated(windowevent e) { public void windowdeiconified(windowevent e) { public void windowiconified(windowevent e) { public void windowopened(windowevent e) { Pengenalan Pemrograman 2 7

public static void main(string args[]) { CloseFrame cf = new CloseFrame("Close Window Example"); cf.launchframe(); 8.5 Adapter Classes 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 classclass adapter yang menerapkan semua method dari masing-masing listener interface dengan lebih dari satu method. Implementasi dari method-method semuanya adalah kosong. 8.5.1 Close Window Example import java.awt.*; import java.awt.event.*; class CloseFrame extends Frame{ Label label; CFListener w = new CFListener(this); CloseFrame(String title) { super(title); label = new Label("Close the frame."); this.addwindowlistener(w); void launchframe() { setsize(300,300); setvisible(true); public static void main(string args[]) { CloseFrame cf = new CloseFrame("Close Window Example"); cf.launchframe(); class CFListener extends WindowAdapter{ CloseFrame ref; CFListener( CloseFrame ref ){ this.ref = ref; public void windowclosing(windowevent e) { ref.dispose(); System.exit(1); Pengenalan Pemrograman 2 8

8.6 Inner Class dan Anonymous Inner Class Bagian ini memberi Anda tinjauan ulang atas konsep yang sudah Anda pelajari di kursus pemrograman pertama. Inner class dan anonymous inner class sangatlah bermanfaat untuk GUI event handling. 8.6.1 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. 8.6.2 Contoh Menutup Window import java.awt.*; import java.awt.event.*; class CloseFrame extends Frame{ Label label; CloseFrame(String title) { super(title); label = new Label("Close the frame."); this.addwindowlistener(new CFListener()); void launchframe() { setsize(300,300); setvisible(true); class CFListener extends WindowAdapter { public void windowclosing(windowevent e) { dispose(); System.exit(1); public static void main(string args[]) { CloseFrame cf = new CloseFrame("Close Window Example"); cf.launchframe(); Pengenalan Pemrograman 2 9

8.6.3 Anonymous Inner Class Anonymous inner class adalah inner class yang tanpa nama. Kegunaan dari anonymous inner class akan menyederhanakan kode-kode Anda lebih lanjut. Di bawah ini merupakan modifikasi dari contoh bagian sebelumnya. 8.6.4 Contoh Menutup Window import java.awt.*; import java.awt.event.*; class CloseFrame extends Frame{ Label label; CloseFrame(String title) { super(title); label = new Label("Close the frame."); this.addwindowlistener(new WindowAdapter() { public void windowclosing(windowevent e){ dispose(); System.exit(1); ); void launchframe() { setsize(300,300); setvisible(true); public static void main(string args[]) { CloseFrame cf = new CloseFrame("Close Window Example"); cf.launchframe(); Pengenalan Pemrograman 2 10

8.7 Latihan 8.7.1 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. Gambar 8.2 : Program Tic-Tac-Toe Pengenalan Pemrograman 2 11