一.GUI的設計步驟
1.建立用戶界面
設計一個頂層容器對象,如JFrame
確定布局,增加組件
改變組件顏色、字體
2.增加事件處理
編寫事件監聽器類(內含事件處理方法)
在事件源上注冊事件監聽器對象
3.顯示用戶界面
二.事件處理機制的幾個重要概念
1.事件
事件是用戶在界面上的一個操作(通常使用各種輸入設備,如:鼠標、鍵盤等來完成)。
當一個事件發生時,該事件用一個事件對象來表示。事件對象有對應的事件類。不同的事件類描述不同類型的用戶動作。事件類包含在java.awt.event和javax.swing.event包中。
2.事件源
產生事件的組件叫事件源。在一個按鈕上單擊鼠標時,該按鈕就是事件源,會產生一個ActionEvent類型的事件。
3.事件處理器(事件處理方法)
事件處理器是一個接收事件對象並進行相應處理的方法。事件處理器包含在一個類中,這個類的對象負責檢查事件是否發生,若發生就激活事件處理器進行處理。
4.事件監聽器類
包含事件處理器,並負責檢查事件是否發生,若發生就激活事件處理器進行處理的類叫做事件監聽器類。其實例就是事件監聽器對象。事件監聽器類必須實現事件監聽器接口或繼承事件監聽器適配器類。
事件監聽器接口定義了處理事件必須實現的方法。事件監聽器適配器類是對事件監聽器接口的簡單實現。目的是為了減少編程的工作量。
事件監聽器接口和事件監聽器適配器類也都包含在java.awt.event和javax.swing.event包中。
5.注冊事件監聽器
為了能夠讓事件監聽器檢查某個組件(事件源)是否發生了某些事件,並且在發生時激活事件處理器進行相應的處理,必須在事件源上注冊事件監聽器。這是通過使用事件源組件的以下方法來完成的:
addXxxListener(事件監聽器對象)
Xxx對應相應的事件類。
三.事件處理機制——委托事件處理
1.
2.事件處理實例:關閉窗口
四.監聽器類——MyWindowListener.java
五.圖形用戶界面——TestFrame.java
六.再論事件處理機制
1.事件、事件監聽器接口、事件監聽器類:
每一類事件有一個相應的事件監聽器接口,該接口定義了接收和處理事件的抽象方法。實現該接口的類,就是監聽器類。其對象可作為監聽器對象向相應的組件注冊。
事件的類名通常為:XxxEvent
對應的事件監聽器接口名通常為:XxxListener
一個監聽器接口定義了一種以上的抽象事件處理方法(事件處理器)。
事件監聽器類實現事件監聽器接口,其類名可以由我們自己取。事件監聽器類需要我們自己編寫。
2.一個組件可以注冊一個或多個監聽器對象,事件對象只向已注冊的監聽器對象報告事件的發生。
七.事件監聽器類的編寫要點
事件監聽器類應該包括以下兩部分內容:
1.在事件監聽器類的聲明中指定要實現的監聽器接口名,如:
public class MyListener implements XxxListener {
… }
2.實現監聽器接口中的事件處理方法,如:
public void 事件處理方法名(XxxEvent e) {
...//處理某個事件的代碼... }
然后,在一個或多個組件上可以進行監聽器類的實例的注冊。如:組件對象.addXxxListener(MyListener對象);
八.事件處理的編程方法總結
要處理某GUI組件(假定為c)上發生的XXXEvent事件,其通用的編程方法是:
編寫一個監聽器類,該監聽器類實現了XXXListener接口,(假定監聽器類的類名為MyXXXListener);
在MyXXXListener中的相應事件處理方法中編寫事件處理代碼(事件處理器)。
調用GUI組件c的addXXXListener()方法注冊事件監聽器對象。 c.addXXXListener(new MyXXXListener());
要處理C上的多種事件,可以編寫多個相應的監聽器類,進行多次注冊。也可以編寫一個實現了多個監聽器接口的類,進行一次注冊。
九.圖形用戶界面編程技巧
通常將圖形組件作為類的成員;
將事件監聽器類寫成GUI類的內部類,方便對組件進行訪問。
十.監聽器適配器類
1.JAVA中提供了大部分監聽器接口的適配器類,其目的是簡化事件監聽器類的編寫,監聽器適配器類是對事件監聽器接口的簡單實現(方法體為空),這樣用戶可以把自己的監聽器類聲明為適配器類的子類,從而可以不管其他方法,只需重寫需要的方法。 對應於監聽器接口XxxListener的適配器接口的類名為XxxAdapter。
2.
十一.事件、接口、適配器與事件處理方法對應表