Banner Java

Inner Class Sebagai Obyek Pendengar Aksi (Event Listener Object)

Event di pemrograman Java dapat ditangani dengan beberapa cara. Di artikel Kelas Sebagai Interface Dan Obyek Pendengar Aksi (Event), Anda dapat mempelajari bagaimana sebuah kelas Java selain bertindak sebagai antar muka pengguna (user interface), juga bertidak sebagai obyek pendengar aksi (event). Obyek pendengar akan mendengarkan setiap event yang dipicu oleh pengguna aplikasi (misalnya mengklik tombol hitung) atau bisa oleh sistem dan akan mengeksekusi setiap baris perintah yang telah diprogramkan.

Selain kelas Java itu sendiri yang bertidak sebagai obyek pendengar event, Anda juga dapat mendeklarasikan kelas tersendiri, misalnya inner class, yang dapat digunakan sebagai obyek pendengar event. Inner class adalah kelas yang berada di dalam kelas yang lain. Inner class sebagai obyek pendengar harus mengimplementasikan interfes (interface) yang bersesuaian dengan event yang akan ditangani. Contoh program berikut ini mendemonstrasikan penggunaan inner class sebagai obyek pendengar event.

// Nama file : InnerClassAsListener.java
// Mendemontrasikan inner class sebagai obyek pendengar event

// Mengimpor kelas
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

// Deklarasi kelas
public class InnerClassAsListener extends JFrame {

   private JPanel panel1, panel2;
   private JButton tombolRed, tombolYellow, tombolGreen;

   public InnerClassAsListener() {

      // Membuat obyek JButton dan JPanel
      tombolRed = new JButton("RED");
      tombolYellow = new JButton("YELLOW");
      tombolGreen = new JButton("GREEN");

      panel1 = new JPanel();
      panel2 = new JPanel();
      panel2.setBackground(Color.RED);

      panel1.setLayout(new GridLayout(1,2));
      panel1.add(tombolRed);
      panel1.add(tombolYellow);
      panel1.add(tombolGreen);
      
      Container container = getContentPane();
      container.setLayout(new BorderLayout());
      container.add(panel2, BorderLayout.CENTER);
      container.add(panel1, BorderLayout.PAGE_END);

      // Membuat obyek pendengar
      PendengarAksi pendengar = new PendengarAksi();
 
      // Mendaftarkan obyek pendengar
      tombolRed.addActionListener(pendengar);
      tombolYellow.addActionListener(pendengar);
      tombolGreen.addActionListener(pendengar);
   }

   // Metoda main
   public static void main(String[] args) {
      InnerClassAsListener frame = new InnerClassAsListener
      frame.setTitle("Kelas InnerClassAsListener");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setSize(280, 150);
      frame.setVisible(true);
   }

   // Mendeklarasikan inner class sebagai obyek pendengar event
   class PendengarAksi implements ActionListener {

      public void actionPerformed(ActionEvent e) {

         if (e.getSource() == tombolRed)
            panel2.setBackground(Color.RED);

         else if (e.getSource() == tombolYellow)
            panel2.setBackground(Color.YELLOW);
         
         else if (e.getSource() == tombolGreen)
            panel2.setBackground(Color.GREEN);

      }
   }
}

Inner class merupakan kelas yang dideklarasikan di dalam kelas lain. Dari kode program di atas, inner class pendengarAksi dideklarasikan di baris nomor 55 – 69. Karena inner class bertindak sebagai obyek pendengar untuk tipe ActionEvent (event yang dipicu oleh tombol tombolRed, tombolYellow dan tombolGreen dari kelas JButton), maka inner class tersebut harus mengimplementasikan interfes ActionListener dan mendeklarasikan ulang metoda actionPerformed. Baris nomor 37 adalah pernyataan untuk mendeklarasikan variabel acuan pendengar (listener), membuat obyek kelas PendengarAksi (inner class) dan memberi variabel pendengar acuan ke obyek tersebut.

Baris nomor 40 – 42 adalah pernyataan untuk meregistrasi obyek pendengar oleh obyek sumber. Registrasi dilakukan dengan menggunakan metoda addActionListener, dimana argumen metoda tersebut adalah variabel yang mengacu ke obyek kelas PendengarAksi (listener). Saat pengguna aplikasi mengklik salah satu tombol (tombol berlabel “RED”, “YELLOW” dan “GREEN”), metoda actionPerformed dieksekusi. Baris nomor 59 – 66 adalah penyeleksian if yang digunakan untuk menyeleksi tombol mana yang memicu event menggunakan ekspresi e.getSource(). Apabila tombol yang ditekan adalah tombolRed, pernyataan baris nomor 60 dieksekusi, apabila tombol yang ditekan adalah tombolYellow, pernyataan baris nomor 63 dieksekusi dan apabila tombol yang ditekan adalah tombolGreen, pernyataan baris nomor 66 dieksekusi.

Java inner class

Untuk memperbaiki mutu konten, Anda dapat berpartisipasi dengan cara melaporkan apabila menemukan kesalahan ketik, kata-kata rangkap, redaksi kurang pas (jelas), gambar pendukung tidak ada dan sebagainya melalui form Kontak Kami untuk mendapatkan perbaikan. Terima kasih atas kerjasamanya.

Hindro HindriantoHindro adalah pendiri sekaligus admin termasmedia.com dan topikit.com, blog online yang mengulas teknologi informasi. Dunia web mulai ditekuni tahun 2012 dengan mempelajari CMS Joomla dan Wordpress. Beberapa buku yang sekarang dipelajari antara lain PHP, HTML5, ASP.NET 4.5, JavaScript, CSS3, MySQL, Adobe Dreamweaver, Adobe Photoshop dan Adobe Flash.