Modul ini membahas konsep event dan exception handling dalam pemrograman Java. Event adalah peristiwa yang terjadi ketika pengguna melakukan aksi terhadap komponen user interface seperti mengklik tombol. Event handler berupa method yang menerima dan memproses event. Exception adalah kondisi tidak normal yang muncul saat program dieksekusi seperti pembagian dengan nol. Statement try dan catch digunakan untuk menangkap dan menangani exception.
1. Modul PBO – Teknokrat
94
EVENT DAN EXCEPTION HANDLING
Tujuan
Praktikan dapat memahami dan menjelaskan konsep event dan exception handling
dalam perograman serta dapat mengimplementasikan ke dalam pemrograman Java.
EVENT HANDLER
Ketika pengguna menuliskan karakter atau menekan button atau mengklik mouse maka akan timbul
event. Event adalah obyek yang mendeskripsikan suatu kejadian (peristiwa yang tejadi). Contohnya
ketika pengguna melakukan aksi terhadap kompenen user interface (misalnya meng-klik mouse
pada tombol), maka tindakan tersebut akan memunculkan sebuah event.
Beberapa istilah dalam event handling:
· Event source: adalah pembangkit sebuah event, misalnya mouse click pada button akan
membangkitkan sebuah ActionEvent dengan button sebagai event source-nya.
· Event handler: adalah sebuah method yang menerima sebuah obyek event,
menerjemahkannya, dan kemudian memproses interaksi pengguna.
· Event listener: Swing menghandle event dengan sekumpulan interface yang disebut dengan
Event Listeners.
Setiap kategori event, terdapat sebuah interface listener yang bersesuaian. Listener tersebut harus
diimplementasikan oleh kelas dari obyek yang akan menerima event tersebut. Listener ini akan
menentukan method mana yang harus didefinisikan dalam sebuah kelas yang sesuai untuk
menerima tipe event tersebut. Method-method ini kemudian akan dipanggil ketika event yang
bersangkutan terjadi. Tabel berikut adalah kategori event, interface, dan method-nya.
Tabel 8. 1
Kategori Nama Interface Method
Action ActionListener actionPerformed(ActionEvent)
Item ItemListener itemStateChanged(Item
Mouse MouseListener mousePressed(MouseEvent)
mouseReleased(MouseEvent)
mouseEntered(MouseEvent)
mouseExited(MouseEvent)
mouseClicked(MouseEvent)
Mouse Motion MouseMotionListener mouseDragged(MouseEvent)
mouseMoved(MouseEvent)
Key KeyListener keyPressed(KeyEvent)
10
BAB
2. Modul PBO – Teknokrat
95
keyReleased (KeyEvent)
keyTyped (KeyEvent)
Focus FocusListener focusGained(FocusEvent)
focusLost (FocusEvent)
Adjustment AdjustmentListener adjustmentValueChanged(AdjustmentEvent)
Component ComponentListener componentMoved(ComponentEvent)
componentHidden(ComponentEvent)
componentResized(ComponentEvent)
componentShown(ComponentEvent)
Window WindowListener windowClosing(WindowEvent)
windowOpened(WindowEvent)
windowIconified(WindowEvent)
windowDeiconified (WindowEvent)
windowClosed(WindowEvent)
windowActivated(WindowEvent)
windowDeactivated (WindowEvent)
Container ContainerListener componentAdded(ContainerEvent)
componentRemoved(ContainerEvent)
Text TextListener textValueChanged(TextEvent)
Langkah-langkah untuk mengimplementasikan event handler secara umum adalah:
· Pada deklarasi class event handler harus meng-implements sebuah interface listener atau
class tersebut meng-extends sebuah class yang meng-implements sebuah interface listener.
Contoh:
public class namaKelas implements ActionListener {
· Daftarkan instan dari class event handler sebagai listener pada satu atau beberapa
komponen.
Contoh:
komponen.addActionListener(instanceOfNamaKelas);
· Tuliskan method yang mengimplementasikan interface listener tersebut. Contoh:
public void actionPerformed(ActionEvent event) {
// tuliskan kode program event yang terjadi
}
Berikut adalah contoh kode program dengan Event Sederhana:
Program 10-1
// MinPlus.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
3. Modul PBO – Teknokrat
96
public class MinPlus implements ActionListener {
private JFrame fr;
private int num;
private JButton btnPlus, btnMin;
private JLabel numL;
public MinPlus() {
num = 0;
buatFrame();
fr.setVisible(true);
}
private void buatFrame() {
fr = new JFrame("Event Sederhana");
fr.setSize(250, 100);
JPanel pn = (JPanel) fr.getContentPane();
pn.setLayout(new BorderLayout());
JPanel p = new JPanel();
btnMin = new JButton("-");
// mendaftarkan actionListener pada tombol btnMin
btnMin.addActionListener(this);
p.add(btnMin); // mengaitkan button ke panel p
btnPlus = new JButton("+");
// mendaftarkan actionListener pada tombol btnPlus
btnPlus.addActionListener(this);
p.add(btnPlus); // mengaitkan button ke panel p
pn.add(p, BorderLayout.NORTH); // mengaitkan panel p ke panel pn
numL = new JLabel("0", SwingConstants.CENTER);
pn.add(numL, BorderLayout.CENTER);
}
public void tambah() {
num++;
}
public void kurang() {
num--;
}
public void actionPerformed(ActionEvent event) {
String opr = event.getActionCommand();
if(opr.equals("-")) {
this.kurang();
} else {
this.tambah();
}
numL.setText(Integer.toString(num));
}
public static void main(String [] args) {
new MinPlus();
}
}
4. Modul PBO – Teknokrat
97
Hasil Output
Berdasarkan hasil output di atas, event yang terjadi adalah ketika pengguna mengklik tombol ‘+’
maka nilai akan bertambah dan sebaliknya jika tombol ‘-‘ yang diklik maka nilai akan berkuran.
Program
10-2
// EventSederhana.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class EventSederhana {
private JFrame frame;
JLabel lblnama=new JLabel("Nama");
JTextField txnama=new JTextField(20);
JLabel lblnim=new JLabel("NIM");
JTextField txnim=new JTextField(7);
JLabel lblkelamin=new JLabel("Jenis Kelamin");
JRadioButton pria=new JRadioButton("Pria");
JRadioButton wanita=new JRadioButton("Wanita");
ButtonGroup kelompok=new ButtonGroup();
JLabel lblhobi=new JLabel("Hobi");
JCheckBox baca=new JCheckBox("Membaca");
JCheckBox mancing=new JCheckBox("Memancing");
JCheckBox jalan=new JCheckBox("Jalan-Jalan");
JButton cetak=new JButton("Cetak");
JTextArea hasil=new JTextArea();
public EventSederhana() {
makeFrame();
frame.setVisible(true);
AksiReaksi();
}
private void makeFrame() {
frame = new JFrame("Event Sederhana");
frame.setSize(300,330);
komponenVisual();
}
6. Modul PBO – Teknokrat
99
if(mancing.isSelected()==true){
hasil.append(mancing.getText()+"n");
}
if(jalan.isSelected()==true){
hasil.append(jalan.getText()+"n");
}
}
});
}
public static void main(String [] args) {
new EventSederhana();
}
}
Hasil Output
EXCEPTION HANDLING
Eksepsi (exception) adalah keadaan tidak normal yang muncul pada suatu bagian program pada saat
dijalankan. Penanganan eksepsi pada java membawa pengelolaan kesalahan program saat
dijalankan kedalam orientasi-objek. Eksepsi java adalah objek yang menjelaskan suatu keadaan
eksepsi yang muncul pada suatu bagian program. Di dalam exception termasuk semua keadaan yang
muncul di dalam program yang sedang dieksekusi. Sebuah exception dapat berupa error atau hanya
kasus khusus.
Exception dikatakan telah dilempar (exception is throw) ketika sebuah exception muncul selama
program dieksekusi. Ketika ini terjadi program diberhentikan dan program bisa rusak.
Bagaimanapun, kegagalan program dapat dihindari jika exception yang dilempar dapat ditangkap
dan dikelola sebagaimana mestinya. Sebuah exception dapat dilempar di suatu bagian program dan
7. Modul PBO – Teknokrat
100
dapat ditangkap di bagian lain dari program tersebut. Exception yang tidak ditangkap akan membuat
program gagal. Contoh: Jika terjadi pembagian dengan nol atau membuka file yang tidak ada, maka
exception akan muncul.
Ketika sebuah error muncul di dalam method, Java membuat sebuah obyek Exception. Setelah
membuat obyek exception, Java mengirimkannya ke program dengan melemparkan exception
(throwing exception). Exception yang dilempar perlu ditangani menggunakan exception handler dan
diproses.
STATEMENT TRY DAN CATCH
Untuk menangkap exception di dalam program java, diperlukan Statement try. Blok Statement try
membingkai kode yang kemungkinan akan memunculkan exception dan mendefinisikan exception
handler yang dapat menanganinya. Blok catch digunakan sebagai exception handler. Blok try harus
mempunyai minimal satu buah blok catch yang mengikutinya. Klausa catch menspesifikasikan tipe
exception yang akan ditangani. Lingkup dari blok catch dibatasi oleh Statement yang ada di dalam
blok try. Statement untuk mendeklarasikan blok try catch:
try {
// statement yang menyebabkan exception
} catch(<exception name> <object name>) {
// statement penanganan error
}
Komputer akan mengeksekusi statement yang ada di dalam blok try. Jika tidak ada exception yang
muncul ketika dieksekusi maka Statement catch tidak akan di jalankan. Jika sebuah exception
muncul maka blok catch akan langsung dijalankan. Contoh:
Program 10-3
public class contoh1 {
public static void main(String [] args) {
int bil1 = 10;
int bil2 = 0;
int hasil = bil1 / bil2;
System.out.println("Hasil pembagian " + hasil);
}
}
Jika program diatas di compile maka tidak ada error, tetapi setelah dieksekusi, handler pada Java
runtime sistem akan melempar sebuah exception ketika terjadi pembagian dengan nol sehingga
akan dibuat sebuah obyek dari kelas exception yang dilempar yaitu ArithmeticException.
Hasil Output
Exception in thread "main" java.lang.ArithmeticException: / by zero
at contoh1.main(contoh1.java:5)
Pada contoh di atas karena muncul exception ArithmeticException maka akan dibuatkan exception
handler untuk ArithmeticException.
Program 10-4
8. Modul PBO – Teknokrat
101
public class contoh1 {
public static void main(String [] args) {
int bil1 = 10;
int bil2 = 0;
try {
int hasil = bil1 / bil2;
System.out.println("Hasil pembagian " + hasil);
} catch (ArithmeticException er) {
System.out.println("Pembagian dengan 0");
}
}
}
Hasil Output
Pembagian dengan 0
Dengan menangani exception maka program terhindar dari kerusakan. Sebelum isi dari catch
dieksekusi, obyek yang merepresentasikan exception diletakkan ke dalam variabel obj, yang berisi
data tentang exception.
9. Modul PBO – Teknokrat
102
Lembar Kerja Praktikum: Modul 10
NPM: Asisten:
Nama: Nilai:
Kelas: Tanggal:
Soal
[Score: 100] Setelah belajar mengenai event, coba tambahkan event-event dibalik semua tombol
Jbutton dari kelas Kalkulator yang sudah dibuat pada Lembar Kerja Praktikum Modul 8, sehingga
kalkulator dapat berjalan normal.