事件監聽 = 事件源 + 事件對象 + 監聽器。當事件源發生特定動作(點擊、關閉窗口等),自動調用已註冊監聽器的回調方法。Java 核心接口:java.util.EventListener。
saveButton.addActionListener(new ActionListener() {
@Override public void actionPerformed(ActionEvent e) { save(); }
});
// 內部類,與外部類並列,不可加 public
class SaveEditListener implements ActionListener {
@Override public void actionPerformed(ActionEvent e) {
FloodCharacterValue v = FloodCharacterValue.transFldPropToFloodCharacterValue(editCharaFldprop);
m_doc.m_floodExtractCharacterValue = v;
}
}
// 使用
saveButton.addActionListener(new SaveEditListener());
對比:
// 接口寫法(冗餘)
dialog.addWindowListener(new WindowListener() {
@Override public void windowOpened(WindowEvent e) {}
@Override public void windowClosing(WindowEvent e) {}
// ... 7 個方法全要寫
});
// 適配器寫法(推薦)
dialog.addWindowListener(new WindowAdapter() {
@Override public void windowClosed(WindowEvent e) {
JDialog d = (JDialog) e.getSource();
// 具體業務邏輯
d.dispose();
}
});
IDE 技巧:右鍵適配器類 → Source → Override/Implement Methods → 勾選所需方法自動生成。
| 事件類型 | 監聽器接口 | 適配器 | 典型場景 |
|---|---|---|---|
| 動作 | ActionListener | — | 按鈕、菜單點擊 |
| 鼠標 | MouseListener | MouseAdapter | 點擊、進入/退出區域 |
| 窗口 | WindowListener | WindowAdapter | 關閉、最小化、激活 |
| 鍵盤 | KeyListener | KeyAdapter | 按鍵按下/釋放 |