SWING - Penanganan Event
Dalam bab ini, Anda akan mempelajari tentang Peristiwa, jenisnya, dan juga mempelajari cara menangani peristiwa. Contoh diberikan di akhir bab untuk pemahaman yang lebih baik.
Apa itu Acara?
Perubahan status suatu objek dikenal sebagai Event, yaitu, peristiwa menjelaskan perubahan status sumber. Peristiwa dihasilkan sebagai hasil interaksi pengguna dengan komponen antarmuka pengguna grafis. Misalnya, mengklik tombol, menggerakkan mouse, memasukkan karakter melalui keyboard, memilih item dari daftar, dan menggulir halaman adalah aktivitas yang menyebabkan terjadinya suatu peristiwa.
Jenis Acara
Peristiwa secara luas dapat diklasifikasikan menjadi dua kategori -
Foreground Events- Peristiwa ini membutuhkan interaksi langsung dari pengguna. Mereka dihasilkan sebagai konsekuensi dari seseorang yang berinteraksi dengan komponen grafis di Antarmuka Pengguna Grafis. Misalnya, mengklik tombol, menggerakkan mouse, memasukkan karakter melalui keyboard, memilih item dari daftar, menggulir halaman, dll.
Background Events- Peristiwa ini membutuhkan interaksi pengguna akhir. Interupsi sistem operasi, kegagalan perangkat keras atau perangkat lunak, pengatur waktu kedaluwarsa, dan penyelesaian operasi adalah beberapa contoh peristiwa latar belakang.
Apa itu Penanganan Acara?
Penanganan Peristiwa adalah mekanisme yang mengontrol peristiwa dan memutuskan apa yang harus terjadi jika peristiwa terjadi. Mekanisme ini memiliki kode yang dikenal sebagai pengendali kejadian, yang dijalankan ketika suatu kejadian terjadi.
Java menggunakan Model Peristiwa Delegasi untuk menangani peristiwa. Model ini mendefinisikan mekanisme standar untuk menghasilkan dan menangani kejadian.
Model Peristiwa Delegasi memiliki peserta kunci berikut.
Source- Sumber adalah objek tempat terjadinya peristiwa. Sumber bertanggung jawab untuk memberikan informasi tentang peristiwa yang terjadi kepada penangannya. Java memberi kita kelas untuk objek sumber.
Listener- Ia juga dikenal sebagai event handler. Pendengar bertanggung jawab untuk menghasilkan respons terhadap suatu peristiwa. Dari sudut pandang implementasi Java, pendengar juga merupakan objek. Pendengar menunggu sampai menerima sebuah acara. Setelah acara diterima, pendengar memproses acara tersebut dan kemudian kembali.
Manfaat dari pendekatan ini adalah logika antarmuka pengguna benar-benar terpisah dari logika yang menghasilkan peristiwa. Elemen antarmuka pengguna dapat mendelegasikan pemrosesan acara ke bagian kode yang terpisah.
Dalam model ini, pendengar harus didaftarkan dengan objek sumber agar pendengar dapat menerima pemberitahuan kejadian. Ini adalah cara yang efisien untuk menangani acara karena pemberitahuan acara dikirim hanya kepada pendengar yang ingin menerimanya.
Langkah-langkah yang Terlibat dalam Penanganan Acara
Step 1 - Pengguna mengklik tombol dan acara dibuat.
Step 2 - Objek kelas acara yang bersangkutan dibuat secara otomatis dan informasi tentang sumber dan acara tersebut diisi dalam objek yang sama.
Step 3 - Objek acara diteruskan ke metode kelas pendengar terdaftar.
Step 4 - Metode dijalankan dan dikembalikan.
Poin yang Perlu Diingat Tentang Pendengar
Untuk mendesain kelas pendengar, Anda harus mengembangkan beberapa antarmuka pendengar. Antarmuka Pemroses ini memperkirakan beberapa metode callback abstrak publik, yang harus diterapkan oleh kelas pendengar.
Jika Anda tidak mengimplementasikan salah satu antarmuka yang telah ditentukan sebelumnya, maka kelas Anda tidak dapat bertindak sebagai kelas pendengar untuk objek sumber.
Metode Callback
Ini adalah metode yang disediakan oleh penyedia API dan ditentukan oleh pemrogram aplikasi dan dipanggil oleh pengembang aplikasi. Di sini metode callback mewakili metode peristiwa. Menanggapi suatu peristiwa, java jre akan mengaktifkan metode callback. Semua metode callback tersebut disediakan di antarmuka pendengar.
Jika sebuah komponen ingin beberapa pemroses mendengarkan kejadiannya, sumber harus mendaftarkan dirinya sendiri ke pemroses.
Contoh Penanganan Acara
Buat program Java berikut menggunakan editor pilihan Anda D:/ > SWING > com > tutorialspoint > gui >
SwingControlDemo.java
package com.tutorialspoint.gui;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class SwingControlDemo {
private JFrame mainFrame;
private JLabel headerLabel;
private JLabel statusLabel;
private JPanel controlPanel;
public SwingControlDemo(){
prepareGUI();
}
public static void main(String[] args){
SwingControlDemo swingControlDemo = new SwingControlDemo();
swingControlDemo.showEventDemo();
}
private void prepareGUI(){
mainFrame = new JFrame("Java SWING Examples");
mainFrame.setSize(400,400);
mainFrame.setLayout(new GridLayout(3, 1));
headerLabel = new JLabel("",JLabel.CENTER );
statusLabel = new JLabel("",JLabel.CENTER);
statusLabel.setSize(350,100);
mainFrame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent windowEvent){
System.exit(0);
}
});
controlPanel = new JPanel();
controlPanel.setLayout(new FlowLayout());
mainFrame.add(headerLabel);
mainFrame.add(controlPanel);
mainFrame.add(statusLabel);
mainFrame.setVisible(true);
}
private void showEventDemo(){
headerLabel.setText("Control in action: Button");
JButton okButton = new JButton("OK");
JButton submitButton = new JButton("Submit");
JButton cancelButton = new JButton("Cancel");
okButton.setActionCommand("OK");
submitButton.setActionCommand("Submit");
cancelButton.setActionCommand("Cancel");
okButton.addActionListener(new ButtonClickListener());
submitButton.addActionListener(new ButtonClickListener());
cancelButton.addActionListener(new ButtonClickListener());
controlPanel.add(okButton);
controlPanel.add(submitButton);
controlPanel.add(cancelButton);
mainFrame.setVisible(true);
}
private class ButtonClickListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
if( command.equals( "OK" )) {
statusLabel.setText("Ok Button clicked.");
} else if( command.equals( "Submit" ) ) {
statusLabel.setText("Submit Button clicked.");
} else {
statusLabel.setText("Cancel Button clicked.");
}
}
}
}
Kompilasi program menggunakan command prompt. Pergi keD:/ > SWING dan ketik perintah berikut.
D:\AWT>javac com\tutorialspoint\gui\SwingControlDemo.java
Jika tidak terjadi error, berarti kompilasi berhasil. Jalankan programnya menggunakan perintah berikut.
D:\AWT>java com.tutorialspoint.gui.SwingControlDemo
Verifikasi keluaran berikut.