歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java事件監聽器

Java事件監聽器

日期:2017/3/1 10:15:28   编辑:Linux編程

在java中,事件的處理非常重要,如響應鍵盤的輸入,鼠標的點擊,窗口的移動等等。java事由事件類和監聽接口組成,算定義一個事件前,必須提供一個事件的監聽接口以及一個事件類。java中監聽接口是繼承自java.util.EventListener的,事件類繼承自java.util.EventObject。很多基本的事件系統已經為我們定義好了,我們只要學會調用即可,但是為了更加靈活地滿足特定的要求,我們有時候需要自定義事件。

java事件監聽器即一組動作接口。如鍵盤事件KeyEvent對應的接口是:

public interface KeyListener extends EventListener {

  public void keyPressed(KeyEvent ev);

  public void keyReleased(KeyEvent ev);

  public void keyTyped(KeyEvent ev);

  }

這個監聽器定義了三個動作,鍵盤按下去調用KeyPressed方法,鍵盤抬起來調用KeyReleased,鍵盤被敲擊一次調用KeyTyped。

事件監聽器是需要注冊才能使用的,注冊方法如下:

public void add<LitenerType>(<ListenerType>listener);

事件監聽器也可以注銷,注銷方法如下:

public void remove<ListenerType>(<ListenerType>listener);

事件監聽器機制是觀察者模式的一種,通過把事件源和事件處理流程以監聽器的方法隔離開來,減少了主流程與被觸發事件的執行流程間的耦合,便於代碼的維護和事件處理流程的擴展。

在事件監聽機制中,涉及三個角色:事件、發布者和監聽器

事件:在事件源和事件監聽器之間傳遞信息的對象實體。

發布者:在事件發生後,負責把事件發布到監聽者的對象。

監聽者:監聽事件,並進行處理或轉發的對象。

java中提供了事件監聽器實現的框架,使用java事件中的事件監聽器,需要熟悉以下幾個類或接口:

1.EventObject:事件的基類,在java中自定義事件時需要繼承的基類,其定義了事件源---Object類型的屬性,可以把發生事件所在的類實例的引用傳遞過來,以便於在事件處理流程中使用(如果有使用要求的話)。在自定義的事件中,還可以定義自己應用所需的其他屬性。

2.EventListener:自定義事件監聽器必須實現的接口,沒有具體方法,只起到標識作用。

AWT事件及其相應的監聽器接口(1)

下表列出了所有AWT事件及其相應的監聽器接口,一共10類事件,11個接口。下面這張表應能牢牢記住。

事件類別 描述信息 接口名 方法  ActionEvent 激活組件   ActionListener  actionPerformed(ActionEvent)  ItemEvent 選擇了某些項目   ItemListener  itemStateChanged(ItemEvent)  MouseEvent 鼠標移動   MouseMotionListener  mouseDragged(MouseEvent)
 mouseMoved(MouseEvent) 鼠標點擊等   MouseListener  mousePressed(MouseEvent)
 mouseReleased(MouseEvent)
 mouseEntered(MouseEvent)
 mouseExited(MouseEvent)
 mouseClicked(MouseEvent)  KeyEvent 鍵盤輸入   KeyListener  keyPressed(KeyEvent)
 keyReleased(KeyEvent)
 keyTyped(KeyEvent)  FocusEvent 組件收到或失去焦點   FocusListener  focusGained(FocusEvent)
 focusLost(FocusEvent)  AdjustmentEvent 移動了滾動條等組件   AdjustmentListener  adjustmentValueChanged(AdjustmentEvent)  ComponentEvent 對象移動縮放顯示隱藏等   ComponentListener  componentMoved(ComponentEvent)
 componentHidden(ComponentEvent)
 componentResized(ComponentEvent)
 componentShown(ComponentEvent)  WindowEvent 窗口收到窗口級事件   WindowListener  windowClosing(WindowEvent)
 windowOpened(WindowEvent)
 windowIconified(WindowEvent)
 windowDeiconified(WindowEvent)
 windowClosed(WindowEvent)
 windowActivated(WindowEvent)
 windowDeactivated(WindowEvent)  ContainerEvent 容器中增加刪除了組件   ContainerListener  componentAdded(ContainerEvent)
 componentRemoved(ContainerEvent)  TextEvent 文本字段或文本區發生改變   TextListener  textValueChanged(TextEvent)

Copyright © Linux教程網 All Rights Reserved