Ads 468x60px

Jumat, 09 Maret 2012

GUI Event Handling

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.
1. 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.
2. 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.
3. 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.

Di bawah ini adalah 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 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 addListener.
void addListener(Listener listenerObj)
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 removeListener.
void removeListener(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 AWTbased
events. Berikut ini beberapa dari class-class AWT event.

Catatan, bahwa semua subclass-subclass AWTEvent mengikuti konvensi nama berikut
ini:
Event

Event Listeners

Event listeners adalah class yang mengimplementasikan interfaces Listener.
Method ActionListener
Interface ActionListener hanya terdiri dari satu method.
Method ActionListener
public void actionPerformed(ActionEvent e)
Mengendalikan ActionEvent e yang terjadi.

Method MouseListener
Di bawah ini adalah method-method MouseListener yang seharusnya digunakan dalam
penerapan class.
Method-method MouseListener
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

Method-Method MouseMotionListener
MouseMotionListener mempunyai dua method untuk diimplementasikan.
Method-method MouseListener
public void mouseDragged(MouseEvent e)
Digunakan untuk memantau pergerakan mouse yang melintasi object 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
object. Pada saat ini tidak ada mouse yang ditekan, hanya memindahkan pointer
mouse melalui object.

Method-Method WindowListener
Di bawah ini method-method dari interface WindowListener.
Method-method WindowListener
public void windowOpened(WindowEvent e)
Dipanggil pada saat object window dibuka (pertama kali window dibuat tampil).
public void windowClosing(WindowEvent e)
Dipanggil pada saat user mencoba untuk menutup object Window dari menu sistem
object.
public void windowClosed(WindowEvent e)
Dipanggil pada saat object Window ditutup setelah memanggil penempatan (misal,
release dari resource-resource yang digunakan oleh source) pada object.
public void windowActivated(WindowEvent e)
Dilibatkan ketika object Window adalah window yang aktif (window masih dipakai).
public void windowDeactivated(WindowEvent e)
Dilibatkan ketika object Window tidak lagi merupakan window yang aktif.
public void windowIconified(WindowEvent e)
Dipanggil ketika object Window di-minimize.
public void windowDeiconified(WindowEvent e)
Dipanggil ketika object Window kembali setelah di-minimize ke keadaan normal.

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 membuat suatu 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 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.
4. Daftarkan object listener, instansiatiate dari class listener pada langkah 2, dengan
source component menggunakan method addListener.

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 pada frame */
add(tf, BorderLayout.SOUTH);
setSize(300,300);
setVisible(true);
}
public void mouseClicked(MouseEvent me) {
String msg = "Mouse clicked.";
tf.setText(msg);
}
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);
}
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);
}
public static void main(String args[]) {
MouseEventsDemo med = new MouseEventsDemo("Mouse Events
Demo");
med.launchFrame();
}
}
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) {
}
public static void main(String args[]) {
CloseFrame cf = new CloseFrame("Close Window Example");
cf.launchFrame();
}
}

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 classclass
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
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);
}
}
sumber: JENI




0 komentar:

Posting Komentar

clock