• Tidak ada hasil yang ditemukan

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
32
0
0

Teks penuh

(1)

GUI Event Handling

(2)

Objectives / Tujuan

Mengenal “The Delegation Event Model”

Mengenal Event Classes

Mengenal Event Listener:

ActionListener Method

MouseListener Method

MouseMotionListener Method

WindowListener Method

Mengetahui langkah-langkah membuat Aplikasi GUI dengan

Event Handling

(3)

Delegation of Event

Model

adalah model yang digunakan Java untuk menangani

interaksi antara user dan komponen GUI

untuk mendeskripsikan bagaimana program

merespon interaksi user

Bagian-bagian penting:

Event Source

Event Listener / Handler

(4)

Event Source

Komponen GUI yang membuat event

(5)

Event Listener /

Handler

Menerima dan menangani event

Mengandung business logic

Contoh: menampilkan informasi penting ke

(6)

Event Object

Dibuat saat event muncul (mis: user

berinteraksi dengan komponen GUI -- tekan

button, ketik di text field, dll)

Mengandung semua informasi yang

berhubungan dengan event yang muncul

Tipe event yang muncul

Asal dari event tersebut

(7)

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

yanga parameter sama dengan object event)

Sekali listener menerima object event dari asal:

mengartikan event

(8)

Control Flow “Delegasi

Event Model”

9

(9)

Registrasi Listener

Berdasarkan Event Source

Registrasi listener:

void add<Type>Listener (<Type>Listener listenerObj)

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:

(10)

Class-class Event

Class EventObject :

Terletak di package

java.util

Class AWTEvent :

Terletak di package

java.awt

merupakan subclass dari EventObject

merupakan root dari semua event berbasis AWT

Penamaan nama subclass:

(11)

Class-class Event

Event Class

Deskripsi

ComponentEvent

Extends AWTEvent. Dibuat jika component digeser, diubah

ukurannya, dibuat visible atau hidden

InputEvent

Extends ComponentEvent. Adalah abstract root untuk

semua class event yang berdasar pada model inputan

ActionEvent

Extends AWTEvent. Dibuat ketika button ditekan, list item

di-click dua kali, atau menu item dipilih

ItemEvent

Extends AWTEvent. Dibuat ketika item dipilih atau tidak

dipilih oleh user, misal di list atau checkbox

KeyEvent

Extends InputEvent. Dibuat ketika key ditekan, dilepas atau

diketik

MouseEvent

Extends InputEvent. Dibuat ketika tombol mouse ditekan,

dilepas atau di-click, atau ketika cursor mouse memasuki

atau keluar area component

TextEvent

Extends AWTEvent. Dibuat ketika isi dari text field atau

text area berubah

WindowEvent

Extends ComponentEvent. Dibuat ketika object Window

dibuka, ditutup, diaktifkan, dinonaktifkan, minimize,

di-maximize, atau focus in dan focus out

(12)

Event Listener

Class yang mengimplementasi interface

<Type>Listener

Berikut adalah daftar interfacenya:

Event Listener

(Interface)

Deskripsi

ActionListener

Menerima action event

MouseListener

Menerima mouse event

MouseMotionListener

Menerima mouse motion event, termasuk

dragging dan menggerakkan mouse

(13)

ActionListener

Hanya memiliki satu method:

public void actionPerformed(ActionEvent e)

merupakan handler untuk ActionEvent yang

terjadi

(14)

MouseListener

public void mouseClicked(MouseEvent e)

memiliki handler untuk event ketika mouse di-click (tekan dan lepas)

public void mouseEntered(MouseEvent e)

untuk menangani kasus dimana mouse memasuki area component

public void mouseExited(MouseEvent e)

untuk menangani kasus dimana mouse keluar area component

public void mousePressed(MouseEvent e)

dipanggil jika mouse ditekan

public void mouseReleased(MouseEvent e)

(15)

MouseMotionListener

public void mouseDragged(MouseEvent e)

dipanggil jika mouse ditekan pada suatu

component kemudian memindah component

tsb (dragged). Dipanggil beberapa kali selama

mouse di-dragged

public void mouseMoved(MouseEvent e)

dipanggil jika mouse digerakkan di component

tanpa menekan mouse. Dipanggil beberapa kali

ketika mose digerak-gerakkan

(16)

WindowListener

public void windowOpened(WindowEvent e)

dipanggil ketika object Window dibuka

public void windowClosing(WindowEvent e)

dipanggil ketika user mencoba untuk menutup window dari system menu

public void windowClosed(WindowEvent e)

dipanggil ketika window ditutup, digunakan untuk membebaskan resource yang

digunakan oleh window

public void windowActivated(WindowEvent e)

dipanggil ketika window dijadikan active window

public void windowIconified(WindowEvent e)

dipanggil ketika window di-minimize

public void windowDeiconified(WindowEvent e)

(17)

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

(18)

Contoh Mouse Event

import java.awt.*;

import java.awt.event.*;

public class MouseEventsDemo extends Frame implements

MouseListener, MouseMotionListener { TextField tf;

public MouseEventsDemo(String title) { }

// Displays GUI

public void launchFrame() {

/* Add components to the frame */

add(tf, BorderLayout.SOUTH); setSize(300, 300);

setVisible(true); }

// Implement methods of event listener interface

public void mouseClicked(MouseEvent me) { String msg = "Mouse clicked.";

tf.setText(msg); }

(19)

Contoh Mouse Event

public void mouseEntered(MouseEvent me) { String msg = "Mouse entered component."; tf.setText(msg);

}

public void mouseExited(MouseEvent me) { String msg = "Mouse exited component."; tf.setText(msg);

}

public void mousePressed(MouseEvent me) { String msg = "Mouse pressed.";

tf.setText(msg); }

public void mouseReleased(MouseEvent me) { String msg = "Mouse released.";

tf.setText(msg); }

(20)

Contoh Mouse Event

public void mouseDragged(MouseEvent me) {

String msg = "Mouse dragged at " + me.getX() + "," + me.getY(); tf.setText(msg);

}

public void mouseMoved(MouseEvent me) {

String msg = "Mouse moved at " + me.getX() + "," + me.getY(); tf.setText(msg);

}

// Main method

public static void main(String args[]) {

MouseEventsDemo med = new MouseEventsDemo("Mouse Events Demo"); med.launchFrame();

} }

(21)

Contoh “Close

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); }

// Implement methods of listener interface

public void windowActivated(WindowEvent e) { }

public void windowClosed(WindowEvent e) { }

public void windowClosing(WindowEvent e) { setVisible(false);

System.exit(0); }

(22)

Contoh “Close

Window”

public void windowDeactivated(WindowEvent e) { }

public void windowDeiconified(WindowEvent e) { }

public void windowIconified(WindowEvent e) { }

public void windowOpened(WindowEvent e) { }

// Main method

public static void main(String args[]) {

CloseFrame cf = new CloseFrame("Close Window Example"); cf.launchFrame();

} }

(23)

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

(24)

Class Adapter: Contoh

“Close Window”

import java.awt.*;

import java.awt.event.*;

class CloseFrameAdapter extends Frame { Label label;

CFListener w = new CFListener(this); CloseFrameAdapter(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();

} }

(25)

Class Adapter: Contoh

“Close Window”

class CFListener extends WindowAdapter { CloseFrameAdapter ref;

CFListener(CloseFrameAdapter ref) { this.ref = ref;

}

public void windowClosing(WindowEvent e) { ref.dispose();

System.exit(1); }

(26)

Inner Class

Class yang dideklarasikan di dalam class

lainnya

Mengapa menggunakan inner class?

Supaya program lebih simple

(27)

Class Adapter: Contoh “Close

Window” dengan Inner Class

import java.awt.*; import java.awt.event.*;

class CloseFrameAdapterInner extends Frame { Label label;

CloseFrameAdapterInner(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();

} }

(28)

Anonymous Inner Class

Class yang tidak memiliki nama

Mengapa?

Lebih simple daripada inner class

(29)

Class Adapter: Contoh “Close

Window” dengan Anonymous Class

import java.awt.*;

import java.awt.event.*;

class CloseFrameAdapterNoName extends Frame { Label label;

CloseFrameAdapterNoName(String title) { super(title);

label = new Label("Close the frame.");

this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { dispose();

System.exit(1); }

public void windowClosed(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();

} }

(30)
(31)
(32)

Referensi

Dokumen terkait

Diharapkan penelitian ini akan dapat memberikan masukan berguna bagi investor muda Surabaya mengenai sejauh mana.. motivasi berinvestasi individu mempengaruhi

Dari data pada Tabel 4 menunjukkan bahwa kecepatan 1000 rpm resistansinya sebesar 523,333 Ω, pada kecepatan putar 2000 rpm resistansinya sebesar 396,667 Ω, dan 3000

.-• Hidrolisis merupakan suatu proses pemecahan sebagian besar fraksi selulosa dan hemiselulosa dari biomassa menjadi gula penyusunnya. Proses hidrolisis untuk memproduksi etanol

Perbedaan kerapatan dan distribusi jenis spora di tiga kabupaten diduga dipengaruhi oleh karakteristik ketiga lokasi pengambilan sampel pada rhizosfer yang berbeda,

Puji syukur penulis panjatkan kehadirat Tuhan Yesus Kristus atas segala berkat, kasih dan penyertaanNya, sehingga penulis dapat menyelesaikan skripsi yang berjudul “ Fungsi

Pada dasarnya stainless steel merupakan salah satu jenis dari baja paduan, sehingga pembuatan stainless steel tidak jauh berbeda dengan proses pembuatan baja paduan, yang

Variabel dependen yang digunakan adalah data profitabilitas, struktur aktiva, ukuran perusahaan dan struktur modal pada perusahaan manufaktur yang terdaftar di Bursa Efek