天天看點

GUI圖形界面程式設計之事件處理機制

事件處理機制三要素:

事件源:能夠産生事件的元件

事件:使用者對元件的一個操作

事件監聽器:接收事件、解釋事件并處理使用者互動的方法處理事件源發生的事件

事件處理機制:當元件(比如 Button)被點選時就會産生ActionEvent事件,事件被傳遞給一個 ActionListener

對象,再由ActionListener 定義的方法來響應處理事件(自動調用ActionEvent)

當事件發生後,将某事件的對象傳遞給事件監聽器(事件監聽器實作了發生此事件所對應的接口),事件監聽器會處理此事件,為了監視此事件,事件的處理方要先向發生方注冊

事件有很多種,監聽事件所實作的接口也有很多種。監聽哪件事,就必須實作此事件的接口。事件與監聽事件的接口一 一對應

按鈕事件處理機制:

按鈕事件(ActionEvent):元件的特定動作(比如被按下)發生時,由元件(比如 <code>Button</code>)生成此進階别事件

要使用鍵盤在 <code>Button</code> 上觸發 <code>ActionEvent</code>,請使用空格鍵

監聽器接口:ActionListener

一個監聽器監聽一個事件源對象

1個監聽器監聽多個事件源對象

TextField 對象可能發生Action(光标在文本框中敲回車)事件,與該事件對應的事件類是java.awt.event.ActionEvent.

java.awt.event.ActionListener接口處理ActionEvent事件

建立文本框并實作文本框輸入顯示到指令行中

文本框輸入内容不可見

内部類:可以友善的通路包裝類的成員變量或成員方法。

    不允許或不需要被其他類通路

Graphic類:用于視窗畫圖,相當于畫筆。

要想在哪個元件中畫圖,就在哪個元件中重寫paint(Graphic g)方法。

paint方法在需要重畫的時候自動調用。比如顯示視窗,視窗最大化,最小化等

滑鼠事件處理機制:

滑鼠事件(MouseEvent):當且僅當動作發生時滑鼠光标處于特定元件邊界未被遮掩的部分上,才認為在該元件上發生了滑鼠動作,生成此低級别事件

監聽器接口:<code>MouseListener:滑鼠事件</code>

MouseMotionListener:滑鼠移動事件

對于以下動作,元件對象将生成此低級别事件:

滑鼠事件

按下滑鼠按鍵
釋放滑鼠按鍵
單擊滑鼠按鍵(按下并釋放)
滑鼠光标進入元件幾何形狀的未遮掩部分
滑鼠光标離開元件幾何形狀的未遮掩部分

滑鼠移動事件

移動滑鼠 拖動滑鼠

<code>實作了監聽器接口的類:MouseAdapter,MouseMotionAdapter</code>

<code>建立的監聽器一般不繼承MouseListener,而是繼承MouseAdapter。因為MouseListener接口有多于一個方法。但是實作後一般隻使用一個方法。如果要實作接口,除了要使用的方法要重寫外,其他不需要使用的方法也要重寫成空方法,比較麻煩。而MouseAdapter已經把接口中的所有方法重寫成空方法。如果繼承MouseAdapter,隻需要重寫你需要的方法即可。</code>

<code></code>

<code></code>window事件處理:

window事件(WindowEvent):

監聽器接口:WindowListener

<code>實作了監聽器接口的類:WindowAdapter</code>

<code>實作關閉視窗</code>

<code>匿名類:</code>

<code>方法裡的邏輯簡單、語句比較少、不經常變動時使用</code>

<code>鍵盤事件處理機制:</code>

<code>鍵盤事件(KeyEvent):表示元件中發生鍵擊的事件。當按下、釋放或鍵入某個鍵時,元件對象(如文本字段)将生成此低級别事件。</code>

監聽器接口:KeyListener

<code>實作了監聽器接口的類:KeyAdapter</code>

當使用鍵盤上”向上箭頭“鍵時,做出反應