BAB
I
DASAR
TEORI
Pada program –
program GUI, setiap user melakukan
pengisian karakter melalui keyboard maupun
klik terhadap tombol mouse, hal ini dikatakan bahwa suatu event telah terjadi.
Event – event semacam ini dapat direspon atau ditangani oleh program untuk
kemudian diproses sesuai dengan kebutuhan yang diinginkan. Sebagai contoh, pada
saat user melakukan tombol klik pada suatu tombol yang ada di dalam sebuah
program, program akan menampilkan sebuah dialog atau form lain. Teknik atau
cara untuk melakukan suatu pekerjaan tertentu pada saat suatu event terjadi
sering dinamakan event handling.
Mekanisme event
handling yang terdapat didalam java didasarkan pada delegation event model (model pendelegasian event), yang
mendefinisikan cara standart dan konsisten untuk membangkitkan dan memproses
suatu event. Konsepnya sederhana saja : event
source (sumber atau pembangkit event) akan membangkitkan atau menghasilkan
suatu event tertentu dan mengirimkannya ke satu atau lebih event listener (pendengar event). Contoh event source adalah objek
– objek atau komponen yang terdapat di dalam user-interface seperti : button, listbox,
combobox, dan sebagainya. Sedangkan contoh event listener adalah interface
keylistener, ActionListener, MouseMotionListener, ItemListener, dan
sebagainnya. Disini, event listener akan menunggu sampai suatu event diterima.
Begitu diterima event listener akan memproses event tersebut dengan melakukan
pekerjaan – pekerjaan tertentu. Salah satu keuntungan dari mekanisme seperti
ini adalah terdapatnya pemisahan – pemisahan yang jelas antara kode logis yang
digunakan untuk memproses event dengan kode logis untuk keperluan user
interface (yang digunakan membengkitkan event). Ini artinya, terdapat suatu
pendelegasian event dari event source ke event listener karena pada saat
pembuatan event source kita tidak perlu mendefinisikan kode untuk keperluan
penanganan event.
BAB
II
PEMBAHASAN
Event Handling
Event Handling adalah suatu metode untuk menangani
sebuah event/aksi yang diberikan pengguna kepada suatu komponen GUI. Event
adalah suatu peristiwa yang dipicu oleh pengguna pada suatu komponen, misalnya
tombol ditekan. Dua paket yang biasa digunakan menangani kejadian adalah java.awt.event
dan java.swing.event. Event handling dalam menangani event terbagi
menjadi 2 macam yaitu Event Source, Event Listener atau Event Handler.
Gambaran mekanisme
event hadling pada java :

Keterangan :
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.
1.
Event Source
Event Source adalah komponen yang mendapatkan suatu
event yang kemudian ditangkap oleh Event Listener. Event Source dapat dibedakan
dari penamaan komponen itu sendiri, misalnya tombolSimpan, tombolhapus, dan
lainnya. Dengan penamaan Event Source ini, Sebuah Event Listener akan dapat
mendeteksi dari mana Event Listener tersebut berasal. Jadi, Event source adalah suatu objek yang
membangkitkan event. Sebagai contoh, pada saat user melakukan klik terhadap
objek button, maka button dianggap sebagai event source.
Event source
harus mendaftarkan listener. Hal ini dilakukan agar listener dapat atau mampu
mendengarkan dan menproses event-event yang terjadi pada objek bersangkutan.
Untuk mendaftarkan listener ke dalam event source, kita harus menggunakan
bentuk umum sebagai berikut :
Public
void addTypeListener (TypeListener eventListener)
Dalam hal ini,
Type adalah event yang terjadi. Sebagai contoh, method yang digunakan untuk
mendaftarkan listener yang berkaitan dengan keyboard akan dinamakan dengan
addKeyListener(). Begitu pula untuk mendaftarkan listener yang berkaitan dengan
mouse, methodnya akan dinamakn dengan addMouseMotionListener().
Listener yang
sudah didaftarkan ke dalam event source dapat dipindahkan dengan menggunakan
bentuk umum berikut :
Public
void removeTypeListener(TypeListener
eventListener)
Type menunjukkan tipe
event yang terjadi pada objek yang berperan sebagai event source.
2.
Event
Listener
Event
listener adalah objek yang diberitahu pada saat suatu event terjadi pada event
source. Event listener diimplementasikan ke dalam bentuk interface. Dengan
demikian, untuk mengimplementasikan salah satu listener tertentu, perlu
mendefinisikan method yang terdapat pada interface bersangkutan. Sebagai
contoh, interface ActionListener mendeklarasikan sebuah method abstrak dengan
nama actionPerformed(). Jadi, apabila ingin membuat kelas yang
mengimplementasikan interface ActionListener, maka harus mendefinisikan method
actionPerformed() didalam kelas yang dibuat. Java telah menyediakan sekumpulan
interface yang digunakan sebagai event listener. Interface – interface tersebut
tersimpan dalam paket java.awt.event. dengan demikian, apabila ingin membuat
event handler pada program GUI yang dibuat maka perlu mengimport packages
tersebut.
Event Listener digunakan untuk menangkap event yang
terjadi pada komponen/Event Source. Dibawah ini disajikan beberapa listener
yang dapat digunakan dalam mendeteksi event.
Interface – interface pada event
Listener
Tabel
dibawah ini menunjukkan beberapa listener interface yang biasanya digunakan :
ActionListener
|
Mendefinisikan sebuah method untuk menangani
terjadinya event ActionEvent
void
actionPerformed(ActionEvent e)
|
AdjustmentListener
|
Mendefinisikan sebuah method untuk menangani
terjadinya event AdjustmentEvent
|
ComponentListener
|
Mendefinisikan empat mthod untuk menangani
terjadinya event Component
void
componentResize(ComponentEvent e)
void
componentMoved(ComponentEvent e)
void
componentShown(ComponentEvent e)
void
componentHidden(ComponentEvent e)
|
ContainerListener
|
Mendefinisikan dua method untuk menangani terjadinya
event ContainerEvent.
|
FocusListener
|
Mendefinisikan dua method untuk menangani terjadinya
event FocusEvent
void
focusGained (FocusEvent e)
void
focusLost (FocusEvent e)
|
ItemListener
|
Mendefinisikan sebuah method untuk menangani
terjadinya event ItemEvent
|
KeyListener
|
Mendefinisikan tiga method untuk menangani
terjadinya event KeyEvent
void
KeyPressed(KeyEvent e)
void
KeyReleased(KeyEvent e)
void
KeyTyped(KeyEvent e)
|
MouseListener
|
Mendefinisikan lima method untuk menangani
terjadinya event MouseEvent
void
mouseClicked (MouseEvent e)
void
mouseEntered (MouseEvent e)
void
mouseExited (MouseEvent e)
void
mousePressed (MouseEvent e)
void
mouseReleased (MouseEvent e)
|
MouseMotionListener
|
Mendefinikan dua method untuk menangani terjadinya
event mouseEvent (pada saat mouse di-drag atau dipindahkan)
void
mouseDragged(MouseEvent e)
void
mouseMoved(MouseEvent e)
|
TextListener
|
Mendefinisikan sebuah method untuk menangani
terjadinya event TextEvent
void
textChanged(TextEvent e)
|
WindowListener
|
Mendefinisikan tujuh method untuk menangani
terjadinya event WindowEvent
void
windowActived(WindowEvent e)
void
windowClosed(WindowEvent e)
void
windowClosing(WindowEvent e)
void windowDeactivated(WindowEvent
e)
void
windowDeiconified(WindowEvent e)
void
windowIconified(WindowEvent e)
void
windowOpened(WindowEvent e)
|
KELAS – KELAS EVENT
Kelas –
kelas event merepresentasikan tipe – tipe event yang dapat terjadi pada sebuah
event source. Semua kelas event di dalam java diturunkan dari kelas EventObject,
yang salah satu constructornya berbentuk seperti berikut :
EventObject(Object
src)
src adalah
object yang membangkitkan event ini. Kelas event object memiliki dua buah
method, yaitu getSource() dan toString(). Method getSource digunakan untuk
memperoleh object yang mengirimkan event. Adapun bentuk umum dari
method getSource() sebagai berikut :
Object
getSource()
Java
menyediakan beberapa tipe event yang diunggulkan oleh berbagai macam elemen
yang terdapat dalam user interface. Tipe – tipe event tersebut disimpan dalam
paket java.awt.event
Tabel berikut ini akan menunjukkan
beberapa event penting :
ActionEvent
|
Dibangkitkan pada saat objek button diklik, item
didalam list di-double click, maupun item menu dipilih.
|
AdjustmentEvent
|
Dibangkitkan pada saat objek scrollbar dimanipulasi
|
ComponentEvent
|
Dibangkitkan pada saat suatu komponen disembunyikan,
dipindahkan, diubah ukurannya, maupun diset ke keaadaan visible
|
ContainerEvent
|
Dibangkitkan pada suatu saat komponen
ditambahkan/dipindahkan ke/dari sebuah container
|
FocusEvent
|
Dibangkitkan pada saat suatu komponen memperoleh
kehilangan fokus keyboard
|
InputEvent
|
Kelas induk (berupa kelas abstrak) dari semua kelas
yang termasuk ke dalam event input.
|
ItemEvent
|
Dibangkitkan pada saat sebuah item dala list atau
checkbox di-click, juga terjadi pada saat item-nya di-buat, dan pada saat
item menu di-check maupun di uncheck
|
KeyEvent
|
Dibangkitkan pada saat input dilakkan melalui
keyboard.
|
MouseEvent
|
Dibangkitkan pada saat mouse didrag, dipindahkan, di
click, ditekan, maupun dilepas. Juga terjadi pada saat mouse memasuki atau
keluar dari suatu komponen.
|
TextEvent
|
Dibangkitkan pada saat text yang berada dalam
komponen text area atau text field diubah
|
WindowEvent
|
Dibangkitkan pada saat window atau form diaktivasi,
ditutup, di-minimize, di-maximize, dibuka, atau dikeluarkan.
|
Rangkain User Action,
Source Object., dan Tipe Event
User
Action
|
Source
Object
|
Tipe
Event
|
Mengklik suatu button
|
JButton
|
ActionEvent
|
Mengubah text
|
JtextComponent
|
TextEvent
|
Menekan tombol enter pada suatu
komponen text field
|
JTextField
|
ActionEvent
|
Memilih suatu event baru
|
JcomboBox
|
ItemEvent,
ActionEvent
|
Memilih satu atau atau banyak
item
|
Jlist
|
ListSelectionEvent
|
Memilih suatu check box
|
JcheckBox
|
ItemEvent,
ActionEvent
|
Memilih suatu radio button
|
JRadioButton
|
ItemEvent,
ActionEvent
|
Memilih suatu item menu
|
JmenuItem
|
ActionEvent
|
Menggerakkan scroll bar
|
JscrollBar
|
AdjustmentEvent
|
Window terbuka, tertutup, diberi
icon dilepaskan, atau window menutup.
|
Window
|
WindowEvent
|
Komponen ditambahkan atau dibuang
dari kontainer
|
Container
|
ContainerEvent
|
Komponen digerakkan, di resize,
disembunyikan (hidden), atau ditampilkan
|
Component
|
ComponentEvent
|
Komponen seketika menjadi fokus
atau kehilangan fokus
|
Component
|
FocusEvent
|
Key ditekan atau dilepaskan
|
Component
|
KeyEvent
|
Mouse ditekan, dilepaskan,
diklik, atau ketika mouse memasuki atau keluar dari suatu komponen.
|
Component
|
MouseEvent
|
Mouse digerakkan atau di-drag
|
Component
|
MouseEvent
|
3.
Event Object
Ketika sebuah event terjadi (misal
ketika user berinteraksi dengan komponen GUI), sebuah objek event diciptakan.
Objek berisi senua 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.
Ø
Event
Handling merupakan konsep penanganan suatu action yang terjadi. Jadi suatu
program akan berjalan saat sesuatu terjadi, misalnya saat tombol diklik, saat
combo box dipilih dan sebagainya. Java memiliki beberapa jenis Event Handling,
salah satunya adalah class ActionListener yang menangani aksi terhadap tombol.
Berikut ini contoh programnya:
Contoh Program :
Ø
Mouse Event
package
project;
import
java.awt.*;
import
java.awt.event.*;
public class
Main extends Frame implements
MouseListener,
MouseMotionListener {
TextField
tf;
public Main (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.";
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[]) {
Main med =
new Main ("Mouse EventsDemo");
med.launchFrame();
}
}
Hasil Running :





Ø
Contoh Program Event Handling (Action Event)
package program;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Main extends
JFrame {
private JButton tombol, btnExit;
public Main() {
super ("Event Handling");
Container container = getContentPane();
container.setLayout(new FlowLayout());
ClickListener cl = new ClickListener();
tombol = new JButton ("Click
Me!");
tombol.addActionListener(cl);
container.add(tombol);
btnExit = new
JButton("Exit");
btnExit.addActionListener(cl);
container.add(btnExit);
setSize (200,100);
setVisible (true);
}
public static void main (String arg[]){
Main test = new Main();
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private class ClickListener implements
ActionListener {
public void actionPerformed
(ActionEvent e) {
if (e.getSource() == tombol) {
JOptionPane.showMessageDialog(null, "You click me, guys!!!");
}
else if (e.getSource() == btnExit)
{
JOptionPane.showMessageDialog(null, "see you, guys!!!");
System.exit(0);
}
}
}
}
Ø
Hasil Running

·
Jika di klik “Click Me!”, akan
muncul :

·
Jika di klik “Exit”, akan
muncul :

No comments:
Post a Comment