Jumat, 21 September 2012

ActionListener

ActionListener digunakan untuk mendengarkan action dari event :

● Klik terhadap JButton
● Pemilihan menu item
● Penekanan tombol enter dalam JTextField

Method dalam ActionListener hanya satu yaitu actionPerformed yang menerima argumen object ActionEvent. ActionEvent berisi informasi-informasi penting ketika Action event terjadi, termasuk tombol modifiers apa yang sedang ditekan. Tombol modifiers antara lain : CTRL, ALT, META dan SHIFT. Method untuk menentukan tombol modifiers apa yang sedang aktif adalahgetModifiers. Method getActionCommand digunakan untuk mengambil command string yang didefinisikan oleh JButton.

Di bagian sebelumnya kita telah bekerja menggunakan komponen swing, dan sudah berlatih bagaimana menangani event klik mouse terhadap JButton. Mari kita lihat lagi aplikasi sederhana berikut :


 
  Contoh aplikasi sederhana yang menangani event actionEvent pada JButton
 
Menangani klik mouse pada JButton dalam Netbeans cukup dengan
memilih JButton di Jendela Design kemudian klik kanan dan pilih
menu :

Events > Action > ActionPerformed

Setelah itu anda akan dibawa ke jendela kode dan baris berikut ini akan dibuat secara otomatis oleh Netbeans :

private void btnHitungActionPerformed(
java.awt.event.ActionEvent evt) {
}

Kemudian kita akan menempatkan kode untuk menangani penekanan tombol di bagian bawah baris //TODO. Sebenarnya Netbeans men-generate beberapa lagi kode di bagian yang tidak dapat diedit, berikut ini cuplikanya :

btnHitung.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt){
btnHitungActionPerformed(evt);
}
});

Method addActionListerner ini mempunyai fungsi yang sama dengan method registerListener pada class Subject yang kita bahas di bagian sebelumnya. addActionListerner berfungsi untuk mendaftarkan Observer ke Subject. Perbedaan terbesar disini adalah Netbeans tidak membuat public class Observer baru untuk mengimplementasi interface ActionListener. Tetapi Netbeans membuat anonymous innerclass yang mengimplement interface
ActionListener.

Perhatikan petikan kode berikut ini :

new ActionListener() {
public void actionPerformed(ActionEvent evt){
btnHitungActionPerformed(evt);
}

Yang dilakukan oleh kode diatas sebenarnya adalah:

1. Membuat Class baru yang tidak punya nama (anonymous)
2. Class baru tersebut turunan dari Object dan mengimplement interface ActionListener
3. Mengimplementasi method abstrac actionPerformed
4. Method actionPerformed dari class tak bernama ini akan memanggil method btnHitungActionPerformed dari class parentnya.

Secara umum Netbeans akan membuat sebuah anonymous innerclass seperti diatas untuk setiap penanganan event. Dari sisi kerapian kode metode ini sangat bagus, karena Netbeans menyembunyikan kerumitan kode untuk menangani event seperti diatas. Kita tidak perlu susah-susah membuat sebuah public class Observer tersendiri untuk menangani event. Cukup dengan anonymous innerclass.

1 komentar: