Saturday, May 26, 2012

Event Handling


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