首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 事件監聽機制入門:從匿名內部類到適配器模式的實戰總結

     編輯:Java 綜合教學

Java 事件監聽機制入門:從匿名內部類到適配器模式的實戰總結

核心概念

事件監聽 = 事件源 + 事件對象 + 監聽器。當事件源發生特定動作(點擊、關閉窗口等),自動調用已註冊監聽器的回調方法。Java 核心接口:java.util.EventListener。

三種實現途徑對比

1. 匿名內部類(最常用,適合邏輯簡單)

saveButton.addActionListener(new ActionListener() {
    @Override public void actionPerformed(ActionEvent e) { save(); }
});

2. 獨立監聽類實現接口(邏輯複雜、需復用)

// 內部類,與外部類並列,不可加 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());

3. 適配器類(僅需覆寫部分方法,如 WindowListener → WindowAdapter)

對比:

  • 接口:必須實現所有方法,單一功能時代碼冗餘。
  • 適配器:預設空實現,按需覆寫,代碼極簡。
// 接口寫法(冗餘)
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—按鈕、菜單點擊
鼠標MouseListenerMouseAdapter點擊、進入/退出區域
窗口WindowListenerWindowAdapter關閉、最小化、激活
鍵盤KeyListenerKeyAdapter按鍵按下/釋放

小結

  • 入門首選匿名內部類,邏輯超 10 行改獨立類。
  • 接口方法超 3 個且只用 1 個 → 適配器。
  • 監聽器本質是觀察者模式的 Java 標準實現。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved