Giao diện EventListener định nghĩa các phương thức bắt buộc triển khai bởi event handler cho một loại sự kiện cụ thể, trong khi lớp Event Adapter cung cấp triển khai mặc định cho giao diện EventListener.
Event Listener
- Event Listeners là xương sống của mọi component để xử lý sự kiện.
- Mọi phương thức của EventListener có một tham số là instance subclass của EventObject.
- EventListener interface cần được extends và định nghĩa trong package java.util.
- Một vài EventListener interfaces: ActionListener, KeyListener, MouseListener, FocusListener, ItemListener.
Ví dụ
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class KeyListenerTest implements KeyListener, ActionListener {
JFrame frame;
JTextField tf;
JLabel lbl;
JButton btn;
public KeyListenerTest() {
frame = new JFrame();
lbl = new JLabel();
tf = new JTextField(15);
tf.addKeyListener(this);
btn = new JButton("Clear");
btn.addActionListener(this);
JPanel panel = new JPanel();
panel.add(tf);
panel.add(btn);
frame.setLayout(new BorderLayout());
frame.add(lbl, BorderLayout.NORTH);
frame.add(panel, BorderLayout.SOUTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setSize(300, 200);
frame.setVisible(true);
}
@Override
public void keyTyped(KeyEvent ke) {
lbl.setText("You have typed " + ke.getKeyChar());
}
@Override
public void keyPressed(KeyEvent ke) {
lbl.setText("You have pressed " + ke.getKeyChar());
}
@Override
public void keyReleased(KeyEvent ke) {
lbl.setText("You have released " + ke.getKeyChar());
}
@Override
public void actionPerformed(ActionEvent ae) {
tf.setText("");
}
public static void main(String args[]) {
new KeyListenerTest();
}
}
Kết quả

Event Adapter
- Các lớp abstract được gọi là Event Adapter để nhận các sự kiện khác nhau.
- Event Adapter class cung cấp triển khai mặc định cho tất cả phương thức trong EventListener interface.
- Vài lớp Event Adapter: FocusAdapter, KeyAdapter, MouseAdapter, WindowAdapter.
Ví dụ
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class KeyAdapterTest {
private JFrame frame;
private JLabel headLabel;
private JLabel msgLabel;
private JPanel controlPanel;
public KeyAdapterTest() {
initializeUI();
}
private void initializeUI() {
frame = new JFrame("KeyAdapter class");
frame.setSize(350, 275);
frame.setLayout(new GridLayout(3, 1));
headLabel = new JLabel("", JLabel.CENTER);
msgLabel = new JLabel("", JLabel.CENTER);
msgLabel.setSize(300, 100);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent windowEvent) {
System.exit(0);
}
});
controlPanel = new JPanel();
controlPanel.setLayout(new FlowLayout());
frame.add(headLabel);
frame.add(controlPanel);
frame.add(msgLabel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
private void showMouseApapter() {
headLabel.setText("KeyAdapter Test");
final JTextField textField = new JTextField(10);
JButton displayButton = new JButton("Display");
displayButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
msgLabel.setText("You entered : " + textField.getText());
}
});
textField.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
msgLabel.setText("You entered : " + textField.getText());
}
}
});
controlPanel.add(textField);
controlPanel.add(displayButton);
frame.setVisible(true);
}
public static void main(String[] args) {
KeyAdapterTest test = new KeyAdapterTest();
test.showMouseApapter();
}
}
Kết quả
