Di artikel Memahami Cara Menangani Aksi (Event) Di Pemrograman Java, Anda dapat mempelajari bagaimana sebuah program java dapat berinteraksi dengan pengguna program (user). Contoh program di artikel tersebut memberi gambaran kepada Anda cara menangani ActionEvent (actionPerformed) ketika tombol dari kelas JButton diklik. Action event dipicu ketika sebuah komponen (obyek yang dari kelas Java) diklik. Beberapa obyek dari kelas Java dapat memicu ActionEvent ketika diklik seperti kelas JButton, JTextField, JFileChooser, JComboBox, JCheckBox, JRadioButton, JList dan Timer. Kelas atau inner class yang bertindak sebagai obyek pendengar action event harus mengimplementasikan interface ActionListener untuk merespon adanya action event serta mendeklarasikan ulang metoda actionPerformed. Metoda actionPerformed memerlukan kelas ActionEvent sebagai argumen parameternya.

Berikut ini adalah contoh program terkait bagaimana menangani ActionEvent ketika sebuah tombol (misalnya obyek yang dikonstruksi dari kelas JButton) diklik. Program yang dimaksud berkaitan dengan lingkaran, bangun datar ini pernah kita pelajari di pelajaran sekolah tingkat SD, SMP, SMA atau bahkan sampai ke perguruan tinggi. Program akan menghitung diameter, keliling dan luas lingkaran berdasarkan nilai jari-jari yang diinput. Berikut ini adalah kode program dan hasil eksekusinya:

// Nama file :LingkaranGUI.java
// Membuat aplikasi lingkaran berpenampilan grafis

// Mengimpor kelas
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.TitledBorder;
import java.text.DecimalFormat;
import bangun.datar.Lingkaran;

// Mendeklarasikan kelas
public class LingkaranGUI extends JFrame implements ActionListener{

   private JLabel label1, label2, label3, label4;
   private JTextField text1, text2, text3, text4;
   private JButton tombol;
   private JPanel panel1, panel2, panel3, panel4;
   private Font font;
   private DecimalFormat formatAngka;
   private Lingkaran lingkaran;

   // Mendesain intefer grafis
   public LingkaranGUI() {

      label1 = new JLabel("Jari-Jari");
      label2 = new JLabel("Diameter");
      label3 = new JLabel("Luas");
      label4 = new JLabel("Keliling");

      panel1 = new JPanel();
      panel1.setLayout(new GridLayout(4, 1));
      panel1.add(label1);
      panel1.add(label2);
      panel1.add(label3);
      panel1.add(label4);
     
      font = new Font("Tahoma", Font.BOLD, 14);  

      text1 = new JTextField(11);
      text1.setHorizontalAlignment(JTextField.RIGHT);  
      text1.setFont(font);
      text2 = new JTextField(11); 
      text2.setHorizontalAlignment(JTextField.RIGHT);     
      text2.setFont(font);
      text2.setForeground(Color.RED);
      text2.setEditable(false);
      text3 = new JTextField(11);  
      text3.setHorizontalAlignment(JTextField.RIGHT);    
      text3.setFont(font);
      text3.setForeground(Color.RED);
      text3.setEditable(false);
      text4 = new JTextField(11); 
      text4.setHorizontalAlignment(JTextField.RIGHT);     
      text4.setFont(font);
      text4.setForeground(Color.RED);
      text4.setEditable(false);

      panel2 = new JPanel();
      panel2.setLayout(new GridLayout(4, 1));
      panel2.add(text1);
      panel2.add(text2);
      panel2.add(text3);
      panel2.add(text4);

      tombol = new JButton("Hitung");
      panel3 = new JPanel();
      panel3.setLayout(new FlowLayout(FlowLayout.RIGHT));
      panel3.add(tombol);

      panel4 = new JPanel();
      panel4.setBorder(new TitledBorder("Form Lingkaran"));
      panel4.setLayout(new BorderLayout());
      panel4.add(panel1, BorderLayout.LINE_START);
      panel4.add(panel2, BorderLayout.LINE_END);

      getContentPane().add(panel4, BorderLayout.CENTER);
      getContentPane().add(panel3, BorderLayout.PAGE_END);

      // Registrasi obyek pendengar
      tombol.addActionListener(this);
   }

   // Mendeklarasikan ulang metoda actionPerformed
   public void actionPerformed(ActionEvent ae) {

      if (ae.getSource() == tombol) {

         double r = Double.parseDouble(text1.getText());
         lingkaran = new Lingkaran(r);

         formatAngka = new DecimalFormat("0.00");
         text2.setText("" + formatAngka.format(lingkaran.getJari2() * 2));
         text3.setText("" + formatAngka.format(lingkaran.hitungLuas()));
         text4.setText("" + formatAngka.format(lingkaran.hitungKeliling()));
      }
   }

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

Ketika program aplikasi dijalankan, Anda dapat memasukkan nilai jari-jari ke kotak teks pertama dan kemudian menekan tombol hitung. Baris nomor 85 – 97 adalah blok metoda actionPerformed yang dieksekusi ketika tombol hitung ditekan. Di dalam blok tersebut, baris nomor 90 adalah pernyataan untuk membuat obyek kelas Lingkaran dan memberi variabel lingkaran acuan ke obyek tersebut.

Baris nomor 93 – 95 adalah pernyataan untuk menampilkan nilai diameter, luas dan keliling lingkaran. Kelas Lingkaran tidak mempunyai metoda untuk mengembalikan nilai diameter lingkaran. Anda dapat menghitung diameter lingkaran dengan menggunakan nilai yang dikembalikan oleh metode getJari2 dan mengalikannya dengan integer 2.

Penanganan ActionEvent Di Java