Event di program Java dapat ditangani dengan beberapa cara. Di artikel Kelas Sebagai Interface Dan Obyek Pendengar Aksi (Event), Anda dapat mempelajari sebuah kelas bertindak sebagai antarmuka grafis (GUI) dan juga sebagai obyek pendengar aksi (event listener). Obyek pendengar (listener object) akan mendengarkan setiap event yang dipicu pengguna aplikasi, misalnya mengklik tombol hitung atau bisa oleh sistem dan akan mengeksekusi baris perintah yang diprogramkan.

Selain kelas antarmuka grafis yang bertidak sebagai obyek pendengar event, Anda juga dapat mendeklarasikan kelas tersendiri yaitu inner class yang dapat digunakan sebagai obyek pendengar event. Inner class adalah kelas yang berada di dalam kelas yang lain. Inner class tersebut harus mengimplementasikan interface yang bersesuaian dengan event yang ditangani. Contoh program sederhana 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 sebagai antarmuka grafis dan obyek event listener Java

Inner class adalah 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 dipicu tombol tombolRed, tombolYellow dan tombolGreen kelas JButton, maka inner class harus mengimplementasikan interface ActionListener dan juga mendeklarasikan ulang metoda actionPerformed.

Baris nomor 37 adalah pernyataan untuk mendeklarasikan variabel 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 menggunakan metoda addActionListener, dimana argumen metoda tersebut adalah variabel yang mengacu ke obyek kelas PendengarAksi. Saat Anda mengklik salah satu dari tombol berlabel “RED”, “YELLOW” dan “GREEN”, metoda actionPerformed dieksekusi.

Baris nomor 59 – 66 adalah penyeleksian if sederhana untuk menyeleksi tombol yang memicu event menggunakan ekspresi e.getSource(). Bila yang ditekan adalah tombolRed, pernyataan baris nomor 60 dieksekusi, bila yang ditekan adalah tombolYellow, pernyataan baris nomor 63 dieksekusi dan bila yang ditekan adalah tombolGreen, pernyataan baris nomor 66 dieksekusi.

SUKAI DAN BAGIKAN ARTIKEL INI:
Pin It