Beberapa obyek 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 (listener) action event harus mengimplementasikan interface ActionListener untuk merespon action event serta mendeklarasikan ulang metoda actionPerformed. Metoda actionPerformed perlu kelas ActionEvent sebagai argumen parameternya.
Berikut ini adalah contoh program cara menangani ActionEvent ketika sebuah tombol kelas JButton diklik. Program yang dimaksud adalah lingkaran yaitu bangun datar yang pernah kita pelajari di sekolah 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:
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 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | // 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); } } |
Saat program berjalan, 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 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.