Banner Java

Anonymous Inner Class Sebagai Obyek Pendengar Event

Anda sudah diperkenalkan pada dua teknik dalam menangani event Java yaitu di artikel Kelas Sebagai Interface Dan Obyek Pendengar Aksi (Event) dan Inner Class Sebagai Obyek Pendengar Aksi (Event Listener Object). Di artikel pertama, kelas yang berfungsi sebagai interfes (interface) pengguna digunakan sekaligus sebagai obyek pendengar event. Di artikel kedua, Java inner class digunakan sebagai obyek pendengar event. Kali ini, Anda akan diperkenalkan pada teknik penanganan event ketiga yaitu menggunakan anonymous inner class. Anonymous inner class tidak mempunyai nama karena obyek dibuat tanpa memberikan acuan obyek tersebut ke variabel. Obyek dari anonymous inner class dibuat dari titik dimana inner class tersebut dideklarasikan. Anda dapat meletakkan metoda penanganan aksi (event) di dalam blok di anonymous inner class. Sebagai obyek pendengar event, anonymous inner class digunakan sebagai argumen dari parameter metoda registrasi.

Berikut ini adalah contoh program yang menggunakan anonymous inner class. Ketika Anda mengklik salah satu tombol (tombol berlabel “Plain”, “Bold”, “Italic” atau “Bold & Italic”), literal string akan ditampilkan sesuai dengan arti label yang ada di setiap tombol yang diklik.

// Nama file : AnonymousInnerClass.java
// Menangani event Java dengan teknik anonymous inner class

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

// Mendeklarasikan kelas AnonymousInnerClass
public class AnonymousInnerClass extends JFrame {

   private JLabel label;
   private JButton tombolPlain, tombolBold, tombolItalic, tombolBoldItalic;
   private JPanel panel;
   private Font font;

   public AnonymousInnerClass() {

      label = new JLabel("Pemrograman Java.", JLabel.CENTER);
      label.setFont(new Font("Tahoma", Font.PLAIN, 28));
      
      // Membuat obyek tombol dan panel
      tombolPlain = new JButton("Plain");
      tombolBold = new JButton("Bold");
      tombolItalic = new JButton("Italic");
      tombolBoldItalic = new JButton("Bold & Italic");

      panel = new JPanel();
      panel.setLayout(new GridLayout(1, 4));
      panel.add(tombolPlain);
      panel.add(tombolBold);
      panel.add(tombolItalic);
      panel.add(tombolBoldItalic);

      Container container = getContentPane();
      container.setLayout(new BorderLayout());
      container.add(label, BorderLayout.CENTER);
      container.add(panel, BorderLayout.PAGE_END);

      tombolPlain.addActionListener(
         new ActionListener() { // anonymous inner class
            public void actionPerformed(ActionEvent e) {
               label.setFont(new Font("Tahoma", Font.PLAIN, 28));
            }
         }  
      );

      tombolBold.addActionListener(
         new ActionListener() { // anonymous inner class
            public void actionPerformed(ActionEvent e) {
               label.setFont(new Font("Tahoma", Font.BOLD, 28));
            }
         }  
      );

      tombolItalic.addActionListener(
         new ActionListener() { // anonymous inner class
            public void actionPerformed(ActionEvent e) {
               label.setFont(new Font("Tahoma", Font.ITALIC, 28));
            }
         }
      );

      tombolBoldItalic.addActionListener(
         new ActionListener() { // anonymous inner class
            public void actionPerformed(ActionEvent e) {
               label.setFont(new Font("Tahoma", Font.BOLD + Font.ITALIC, 28));
            }
         }  
      );
   }

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

Baris nomor 41-45, 49-53, 57-61 dan 65-69 adalah deklarasi anonymous inner class. Anonymous inner class dijadikan sebagai argumen dari parameter metoda registrasi addActionListener. Anonymous inner class ini bertindak sebagai pengganti obyek pendengar. Di dalam blok anonymous inner class, Anda harus mendeklarasikan kembali metoda (handler) actionPerformed dari interfes ActionListener.

Anonymous inner class secara khusus bertalian langsung dengan komponen yang dapat memicu event. Dari kode program di atas, masing-masing tombol (tombolPlain, tombolBold, tombolItalic dan tombolBoldItalic dari kelas JButton) mempunyai penanganan event tersendiri dengan menggunakan anonymous inner class. Anda perlu menggunakan penyeleksian if else untuk mengetahui tombol mana yang memicu event.

Anonymous inner class in Java

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.