Lớp xử lý ActionEvent nên triển khai interface ActionListener. Đối tượng của lớp đó phải được đăng ký với một thành phần. Đối tượng có thể được đăng ký bởi sử dụng phương thức addActionListener(). Khi action event xảy ra, phương thức actionPerformed() của đối tượng đó được gọi.
Cú pháp khai báo cho java.awt.event.ActionListener interface là:
public interface ActionListener extends EventListener
Interface này kế thừa các phương thức từ lớp java.awt.EventListener.
Phương thức của ActionListener trong Java Swing:
void actionPerformed(ActionEvent e): Được triệu hồi khi một action xuất hiện.
Nội dung chính
Ví dụ ActionListener
package vn.viettuts.swing; import java.awt.Color; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.WindowConstants; public class ActionListenerExam1 { private JFrame mainFrame; private JLabel headerLabel; private JLabel statusLabel; private JPanel controlPanel; public ActionListenerExam1(){ prepareGUI(); } public static void main(String[] args) { ActionListenerExam1 demo = new ActionListenerExam1(); demo.showActionListenerDemo(); } private void prepareGUI() { mainFrame = new JFrame("Vi du Java Swing"); mainFrame.setSize(400, 300); mainFrame.setLayout(new GridLayout(3, 1)); headerLabel = new JLabel("", JLabel.CENTER); statusLabel = new JLabel("", JLabel.CENTER); statusLabel.setSize(350, 100); controlPanel = new JPanel(); controlPanel.setLayout(new FlowLayout()); mainFrame.add(headerLabel); mainFrame.add(controlPanel); mainFrame.add(statusLabel); mainFrame.setVisible(true); mainFrame.setTitle("Ví dụ ActionListener trong Java Swing"); mainFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } private void showActionListenerDemo() { headerLabel.setText("Listener in action: ActionListener"); JPanel panel = new JPanel(); panel.setBackground(Color.magenta); JButton okButton = new JButton("OK"); okButton.addActionListener(new CustomActionListener()); panel.add(okButton); controlPanel.add(panel); mainFrame.setVisible(true); } class CustomActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { statusLabel.setText("Ok Button Clicked."); } } }
Chạy chương trình trên cho kết quả như sau: