




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1主要涉及3類對象。(1)Event(事件):用戶使用鼠標或鍵盤對窗口中的組件進行交互發(fā)生的一個操作。例如,單擊按鈕等。(2)EventSource(事件源):能夠產生事件的對象。如按鈕、鼠標、文本框或鍵盤等。(3)Eventlistener(事件監(jiān)聽者或處理者)包含對事件進行處理方法的類。事件監(jiān)聽器A事件監(jiān)聽器B事件對象事件對象事件源(例如:按鈕)12.5事件處理模型12.5事件處理模型12.5.1事件處理機制事件處理機制專門用于響應用戶的操作,比如,想要響應用戶的點擊鼠標、按下鍵盤等操作,就需要使用AWT的事件處理機制事件對象(Event):封裝了GUI組件上發(fā)生的特定事件(通常就是用戶的一次操作)。事件源(組件):事件發(fā)生的場所,通常就是產生事件的組件監(jiān)聽器(Listener):負責監(jiān)聽事件源上發(fā)生的事件,并對各種事件做出響應處理的對象(對象中包含事件處理器)事件處理器:監(jiān)聽器對象對接收的事件對象進行相應處理的方法3!用戶交互事件如:單擊鼠標如:按下/釋放鼠標按鈕對象狀態(tài)改變調用事件處理確定發(fā)生的事件的類型確定生成的事件的組件編寫合適的代碼處理事件事件作用于對象。對象識別事件并做出響應,不同的對象能識別的事件不全相同。可以針對相應的事件編寫相應的代碼,在事件發(fā)生時,程序執(zhí)行事件里的代碼。4
源對象監(jiān)聽器事件
傳播事件的實例方法傳遞途徑代理事件模型Swing中的GUI組件適配器對象12.5事件處理模型12.5.1事件處理機制12.5事件處理模型12.5.2事件適配器例程9-3實現(xiàn)了和例程9-2相同的功能。定義的MyWindowAdapter類繼承了適配器類WindowAdapter,由于實現(xiàn)的功能是關閉窗口,因此只需要對windowClosing()方法進行重寫即可。需要注意的是,幾乎所有的監(jiān)聽器接口都有對應的適配器類,通過繼承適配器類來實現(xiàn)監(jiān)聽器接口時,需要處理哪種事件,直接重寫該事件對應的方法即可。12.5事件處理模型12.5.3用匿名內部類實現(xiàn)事件處理12.5事件處理模型窗體事件WindowEvent用于表示這些窗體事件,在應用程序中,當對窗體事件進行處理時,首先需要定義一個類實現(xiàn)WindowListener接口作為窗體監(jiān)聽器,然后通過addWindowListener()方法將窗體對象與窗體監(jiān)聽器綁定12.5事件處理模型鼠標事件MouseEvent類用于表示鼠標事件,幾乎所有的組件都可以產生鼠標事件,鼠標事件包括鼠標按下、鼠標松開、鼠標單擊等。對鼠標事件的處理可通過實現(xiàn)MouseListener接口或者繼承適配器MouseAdapter類,然后調用addMouseListener()方法將監(jiān)聽器綁定到事件源對象12.5事件處理模型鍵盤事件鍵盤操作也是最常用的用戶交互方式,例如鍵盤按下、釋放等,這些操作被定義為鍵盤事件KeyEvent類表示鍵盤事件,處理KeyEvent事件的監(jiān)聽器對象需要實現(xiàn)KeyListener接口或者繼承KeyAdapter類。12.5事件處理模型動作事件在Java中,動作事件用ActionEvent類表示,處理ActionEvent事件的監(jiān)聽器對象需要實現(xiàn)ActionListener接口,但監(jiān)聽器對象在監(jiān)聽動作時,不會像鼠標事件一樣處理鼠標個別的移動和單擊的細節(jié),而是去處理“按鈕按下”這樣“有意義”的事件。12【例9-7】在一個窗口中擺放5個組件,3個標簽和2個文本框。當文本框中信息更改后,將文本框中信息顯示在第3個標簽中,同時設置其背景色為黃色。
演示:Event_Exam.java12.5事件處理模型1312.5.4事件處理類java.util.EventObject類是所有事件對象的基礎父類,所有事件都是由它派生出來的。Swing的相關事件繼承于java.awt.SwingEvent類Swing事件分為兩大類:低級事件高級事件1412.5.4事件處理類低級事件:指基于組件和容器的事件,當一個組件上發(fā)生事件,如鼠標的進入、點擊、拖放等,或組件的窗口開關等時,觸發(fā)了組件事件。(1)ComponentEvent組件事件:組件尺寸的變化、移動。(2)ContainerEvent容器事件:組件增加、移動。(3)WindowEvent窗口事件:包括用戶點擊了關閉按鈕,窗口得到與失去焦點,窗口最小化等。(4)FocusEvent焦點事件:焦點的獲得和丟失。(5)KeyEvent鍵盤事件:鍵按下、釋放。(6)MouseEvent鼠標事件:包括鼠標按下,鼠標釋放,鼠標點擊等。1512.5.4事件處理類高級事件:基于語義的事件,它可以不和特定的動作相關聯(lián),而依賴于觸發(fā)此事件的類。比如,在JTextField中按Enter鍵會觸發(fā)ActionEvent事件,滑動滾動條會觸發(fā)AdjustmentEvent事件,選中項目列表的某一條就會觸發(fā)ItemEvent事件。(1)ActionEvent動作事件:對應一個動作事件,它不是代表一個具體的動作,而是一種語義。如按鈕按下,JTextField中按Enter鍵。(2)AdjustmentEvent調節(jié)事件:在滾動條上移動滑塊以調節(jié)數(shù)值。(3)ItemEvent項目事件:選擇項目,不選擇“項目改變”。(4)TextEvent文本事件:文本對象改變。1612.5.4事件處理類事件監(jiān)聽接口:一個類可以實現(xiàn)多個接口,接口中已定義的方法必須一一實現(xiàn),如果對某事件不感興趣,也要用空的方法體代替。適配器類(Adapter):為一些Listener接口提供了適配器,可通過繼承事件所對應的Adapter類,重寫所需要的方法,無關的方法則不用實現(xiàn)。事件適配器為提供了一種簡單的實現(xiàn)監(jiān)聽器的手段,可以縮短程序代碼。1712.5.5案例分析:鍵盤和鼠標事件類綜合實例1.案例描述利用一個文本框組件接收從鍵盤輸入的文字,同時將所觸發(fā)的“鍵盤事件”顯示在一個文本區(qū)組件中。利用鼠標拖動窗口中按鈕,同時將鼠標指針當前的位置顯示在文本框中。1812.5.5案例分析:鍵盤和鼠標事件類綜合實例2.案例分析本案例至少需要創(chuàng)建2個文本區(qū),1個文本框和1個按鈕。為了響應鼠標和鍵盤事件需要編程實現(xiàn)KeyListener接口、MouseListener接口和MouserMotionListener接口。為了將兩種事件類分別演示,需要將窗口布局設置為CardLayout方式,同時還需增加至少兩個按鈕來完成翻頁功能。演示程序:KeyAndMouse_Exam.java19練習題:編寫一個允許學生在文本字段中輸入一個數(shù)的程序。創(chuàng)建一個每當用戶單擊一次就將此數(shù)加一的按鈕。創(chuàng)建另一個每當用戶單擊一次就將此數(shù)減一的按鈕。界面效果如下圖所示。20importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;classIncrementorimplementsActionListener{JTextFieldnumberTxf;JButtonincrementBtn,decrementBtn;publicvoidmakeGUI(){JFramefrm=newJFrame("Incrementor");Containerc=frm.getContentPane();c.setLayout(newFlowLayout());numberTxf=newJTextField("0",5);c.add(numberTxf);incrementBtn=newJButton("Increment");c.add(incrementBtn);
incrementBtn.addActionListener(this);decrementBtn=newJButton("Decrement");c.add(decrementBtn);
decrementBtn.addActionListener(this);frm.setSize(300,100);frm.setVisible(true);}21publicvoidactionPerformed(ActionEvente){intoldNum=Integer.parseInt(numberTxf.getText());intnewNum=oldNum;if(e.getActionCommand().equals("Increment")){newNum++;}elseif(e.getActionCommand().equals("Decrement")){newNum--;}numberTxf.setText(String.valueOf(newNum));}publicstaticvoidmain(Stringargs[]){Incrementori=newIncrementor();i.makeGUI();}}if(e.getSource()==incrementBtn){elseif(e.getSource()==decrementBtn){22練習題:用JComboBox和JCheckBox來演示可選項目事件接口,界面如下圖所示:23importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassItemDemoimplementsItemListener{JFramef;JPanelp1,p2,p3;JLabelbirthPlace,hobby;JComboBoxplace;JCheckBoxhobby1,hobby2,hobby3;publicItemDemo(Stringtitle){f=newJFrame(title);p1=newJPanel();birthPlace=newJLabel("出生地:");place=newJComboBox();place.addItemListener(this);place.addItem("杭州");place.addItem("寧波");place.addItem("溫州");place.addItem("紹興");p1.add(birthPlace);p1.add(place);f.add(p1,"North");24p2=newJPanel();p2.setLayout(newGridLayout(3,1));hobby=newJLabel("業(yè)余愛好:");hobby1=newJCheckBox("運動");
hobby1.addItemListener(this);hobby2=newJCheckBox("旅游");
hobby2.addItemListener(this);hobby3=newJCheckBox("上網");
hobby3.addItemListener(this);p2.add(hobby1);p2.add(hobby2);p2.add(hobby3);p3=newJPanel();p3.add(hobby);p3.add(p2);f.add(p3,"Center");
f.pack();f.setVisible(true);}25publicvoiditemStateChanged(ItemEvente){if
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 沖刺搶分卷09 備戰(zhàn)2025年高考考前仿真模擬卷沖刺搶分卷化學試題09 (遼寧、黑龍江、吉林、內蒙古專用) 含解析
- 核心考點解讀2025年公共關系學試題及答案
- 中級經濟師基礎知識試題及答案解答
- 經濟法概論復習方法試題及答案研究
- 2025年建筑行業(yè)的可持續(xù)管理實踐試題及答案
- 公共關系與危機應對機制試題及答案
- 2025年中級經濟師考試的考生體驗分享試題及答案
- 阜陽院校測試題及答案
- 工程經濟的比較分析方法試題及答案
- 2019-2025年衛(wèi)生招聘考試之衛(wèi)生招聘(計算機信息管理)模擬考試試卷B卷含答案
- 2025展覽館裝飾工程合同范本
- 2025網絡安全協(xié)議合同
- (高清版)JTGT 3650-01-2022 公路橋梁施工監(jiān)控技術規(guī)程
- 中國歷史地理智慧樹知到期末考試答案章節(jié)答案2024年北京大學
- MOOC 跨文化交際通識通論-揚州大學 中國大學慕課答案
- GB/T 3164-2007真空技術圖形符號
- 重介質旋流器選煤畢業(yè)設計說明書
- 電氣設備調試定額
- 儲能技術-儲能材料-新能源材料-鋰電池儲能(PPT100頁)
- 商品銷售明細單(樣本)
- 石油化工行業(yè)裝卸車效率提升策略探討
評論
0/150
提交評論