Mengenal Anonymous Inner Class di program Java
Memahami Dan Mengenal Anonymous Inner Class Di Program Java
Di artikel Kelas Sebagai Interface Dan Obyek Pendengar Aksi (Event) Di java dan artikel Inner Class Sebagai Obyek Pendengar Aksi (Event Listener Object) Di Java, Anda diperkenalkan pada dua teknik menangani event di Java. Di artikel pertama, kelas yang berfungsi sebagai interface pengguna juga digunakan sebagai obyek pendengar event. Di artikel kedua, Java inner class digunakan sebagai obyek pendengar event.

Artikel kali ini, diperkenalkan teknik penanganan event di Java menggunakan anonymous inner class. Anonymous inner class tidak mempunyai nama karena obyek dibuat tanpa memberikan acuan ke variabel. Obyek anonymous inner class dibuat dari titik dimana inner class 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 dari tombol berlabel “Plain”, “Bold”, “Italic” atau “Bold & Italic”, literal string ditampilkan sesuai dengan arti label yang ada di setiap tombol yang diklik.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
// 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);
   }
}

Anonymous inner class di bahasa pemrograman Java

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

Anonymous inner class secara khusus berkaitan langsung dengan komponen yang memicu event. Dari kode program di atas, masing-masing 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.