JAVA 事件處理模型


一、用戶事件

用戶在程序界面所進行的操作,比如單擊鼠標或者輸入字符,稱為用戶事件

程序對這些用戶事件做出響應,稱為事件處理。

 

二、事件處理模型

1.事件類型——偵聽程序接口

系統將這些用戶事件分類,分成各種事件類型

系統為每個事件類型提供了一個偵聽程序接口,接口包含的方法,規定了接受並處理該類事件的規范。

 

2.偵聽程序接口——事件偵聽程序

為了接收並處理某個事件類型,組件必須注冊相應的事件處理程序,稱為事件偵聽程序(Listener,也稱為偵聽器)

 

Listener的構造條件有兩個:

一是必須實現對應事件類型的偵聽程序接口,

二是需要實現接口中規定的響應事件的方法。

 例如,為了處理按鈕上的ActionEvent事件,需要定義一個實現ActionListener接口的偵聽程序類。

public interface ActionListener extends EventListener{

  public void actionPerformed(ActionEvent e);

}

該接口中只定義了一個方法actionPerformed(),當出現ActionEvent事件時,就會調用該方法。

actionPerformed(),是一個回調函數。即被系統調用的函數。

直調回調的差別在於,調用主體是不是第一人稱的程序體。actionPerformed()是預先設定的函數,但是設定當時並沒有被調用,而是等待ActionEvent發生時候,由系統來把這種行為作為參數,調用這個函數。

btw,系統調用這些回調的方法是輪詢,即用輪詢的方式在線程池隊列中查找偵聽這個系統事件的回調函數。

 

我們回到這個偵聽事件類。每個組件都有若干個形如addXXXListener(XXXListener)的方法,通過這類方法,可以為組件注冊事件偵聽程序。

這種處理事件機制稱為委托事件處理機制

概括地說,事件被直接送往產生這個事件的組件,組件需要注冊一個或多個偵聽程序。偵聽程序的類中包含了事件處理程序,接收和處理這個事件。事件是一個對象,它只向注冊的偵聽程序報告。

 

三、GUI事件處理步驟

1.程序中引入java.awt.event包

import java.awt.event.

2.給所需的事件源對象注冊偵聽事件程序。

事件源對象.addXXXListener(XXXListener);

3.實現相應的方法。如果偵聽程序接口包含多個方法,必須實現所有方法。

 

事件的偵聽程序可以定義在一個單獨的類中,也可以定義在組件類中。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM