- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第13章 視窗應用程式的事件處理 13-1 事件處理的基礎 13-2 事件改編者類別 13-3 滑鼠事件處理 13-4 鍵盤事件處理 13-5 Swing元件的事件處理 13-1 事件處理的基礎 13-1-1 事件的基礎 13-1-2 委託事件處理模型 13-1-3 AWTEvent事件物件 13-1-4 事件來源 13-1-5 事件傾聽者 13-1 事件處理的基礎 在Java程式使用Swing或AWT元件建立的圖形使用介面是一種事件驅動程式設計(Event-driven Programming),程式碼的主要目的是回應或處理使用者的操作。 例如:鍵盤輸入、滑鼠移動、按一下和按二下等,程式的執行流程需視使用者的操作而定。 13-1-1 事件的基礎 「事件」(Event)是在執行視窗應用程式時,滑鼠或鍵盤等操作所觸發的一些動作。如果將應用程式視為一輛公共汽車,公車依照行車路線在馬路上行駛,事件就是在行駛過程中發生的一些動作,如下所示: 看到馬路上的紅綠燈。 乘客上車、投幣和下車。 上述動作發生時可以觸發對應的事件,當一個事件產生後,接下來可以針對事件作處理,例如:當看到站牌有乘客準備上車時,乘客上車的事件就觸發了,司機知道需要路邊停車和開啟車門。 13-1-2 委託事件處理模型-圖例 Java JDK 1.1版的事件處理是一種「委託事件處理模型」(Delegation Event Model),分為「事件來源」(Event Source)和處理事件的「傾聽者」(Listener)物件,如下圖所示: 13-1-2 委託事件處理模型-說明 事件來源可能是Component物件的滑鼠、滑鼠移動和鍵盤事件,或Swing和AWT元件產生的選取或文字輸入事件,當事件產生時,傾聽者可以接收事件然後進行處理,傾聽者是一個委託處理指定事件的物件。 13-1-2 委託事件處理模型-如何建立 在Java語言是使用介面(Interface)來建立委託事件處理模型,傾聽者物件只是實作一些標準介面的類別物件。 例如:MouseListener、WindowListener和KeyListener等介面,然後實作介面的方法,各事件來源物件註冊的就是上述介面資料型態的傾聽者物件。 13-1-2 委託事件處理模型-事件處理 在此所謂的事件處理就是執行介面方法,事件來源物件並不知道,也不用考量是對應哪一個傾聽者物件,因為它是使用介面資料型態的物件變數,透過動態連結的多形,就可以在傾聽者物件執行正確的介面方法。 例如:滑鼠事件MouseEvent產生時,將會傳送給委託為MouseListener介面的所有傾聽者物件來進行處理,執行的就是此介面的mouseClicked()、mousePressed()、mouseReleased()、mouseEntered()和mouseExited()方法。 13-1-3 AWTEvent事件物件-低階事件 低階事件(Low-level Events)是一些基本輸入和視窗操作等相關的事件,其說明如下表所示: 13-1-3 AWTEvent事件物件-語意事件 語意事件(Semantic Events)是指使用者與GUI元件互動操作所產生的相關事件,如下表所示: 13-1-4 事件來源-低階事件 「事件來源」(Event Source)是指哪一個物件產生此事件,首先是低階事件的來源類別,其說明如下表所示: 13-1-4 事件來源-語意事件 語意事件的來源類別,其說明如下表所示: 13-1-5 事件傾聽者-新增成為傾聽者 當事件來源類別產生事件物件後,Java程式需要委託類別來處理此事件,也就是將類別指定成傾聽者物件,其相關方法的說明,如下表所示: 13-1-5 事件傾聽者-實作的介面方法1 一旦類別新增為傾聽者,該類別需要實作傾聽者介面的所有方法,如下表所示: 13-1-5 事件傾聽者-實作的介面方法2 13-1-5 事件傾聽者-範例 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Ch13_3_1 extends JFrame implements MouseListener { public Ch13_3_1() { …… txt.addMouseListener(this); // 新增事件處理 } // 事件處理方法 public void mouseClicked(MouseEvent evt) { } public void mouseEntered(MouseEvent evt) {
原创力文档


文档评论(0)