




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、PART 02事件處理Chapter 05底層事件5-1 簡介5-2 Java事件架構(gòu)5-3 AWTEvent 類5-4 ComponentEvent 類5-5 KeyEvent類5-6 MouseEvent類5-7 ContainerEvent類5-8 FocusEvent類5-9 WindowEvent類5-10 習(xí)題5-1 簡介在前面各章中,我們探討了如何繪圖?如何讀取圖片?但仍缺少精彩的交互性,譬如使用鍵盤改變移動方向,這些都是令人興奮的交互操作。雖然讀者可能是資深玩家,但如果能徹底了解其中程序設(shè)計的奧妙,那將更有意義。5-2 Java事件架構(gòu) 當默認事件發(fā)生時,無論程序在何處,進行何
2、種動作,它都將暫停,由系統(tǒng)將適當?shù)馁Y源(包括CPU與時間)分配給它,以優(yōu)先支持該事件的運行。 Java支持的底層事件類有:ComponentEventContainerEventFocusEventKeyEventMouseEventWindowEvent圖5-1圖5-15-3 AWTEvent 類java.awt.AWTEvent繼承自EventObject Object,此類是所有底層事件類的基礎(chǔ)類。5-4 ComponentEvent 類 ponentEvent繼承自AWTEvent EventObject Object,此類將組件層次的事件封裝起來,如移動(Move)、改變大?。≧es
3、ize)、隱藏(Hid)或顯示(Show)等 。范例22:文件Ex5_4_1.java的功能是解釋移動框架的Component事件。 01 import java.awt.*;02 import java.awt.event.*;03 public class Ex5_4_1 extends Frame 04 public Ex5_4_1() 05 super(Ex5_4_1);06 setSize(350, 350);07 setVisible(true);08 enableEvents( PONENT_EVENT_MASK);09 10 public ponentEvent(Compone
4、ntEvent e)11 if(e.getID() = PONENT_MOVED)12 System.out.println(getSource() : +e.getSource();13 System.out.println(getID() : +e.getID();14 15 范例22 續(xù)16 public static void main(String args) 17 Ex5_4_1 workStart=new Ex5_4_1();18 19 范例23:文件Ex5_4_2.java的功能是解釋改變框架大小的Component事件。 01 import java.awt.*;02 imp
5、ort java.awt.event.*;03 public class Ex5_4_2 extends Frame 04 public Ex5_4_2() 05 super(Ex5_4_2);06 setSize(350, 350);07 setVisible(true);08 enableEvents( PONENT_EVENT_MASK);09 10 public void ponentEvent(ComponentEvent e) 11 if(e.getID() = PONENT_RESIZED)12 System.out.println(getSource() : + e.getSo
6、urce();13 System.out.println(“getID() : ” + e.getID();14 15 范例23 續(xù)16 public static void main(String args) 17 Ex5_4_2 workStart=new Ex5_4_2();18 19 5-5 KeyEvent 類 java.awt.event.KeyEvent繼承自InputEvent ComponentEvent AWTEvent EventObject Object,此類將與按鍵有關(guān)的事件封裝起來,擊打鍵盤是按鍵事件的來源(KeyEvent Source),它還實現(xiàn)了KeyList
7、ener接口,即一個KeyEvent會被送到KeyListener中進行處理。范例24:文件Ex5_5_1.java的功能是解釋以鍵“A”作為KEY_PRESSED按鍵事件時,如何讀取按鍵事件構(gòu)造函數(shù)參數(shù)的內(nèi)容? 01 import java.awt.*;02 import java.awt.event.*;03 public class Ex5_5_1 extends Frame 04 public Ex5_5_1() 05 super(Ex5_5_1);06 setSize(350, 350);07 setVisible(true);08 enableEvents(AWTEvent.KEY
8、_EVENT_MASK);09 范例24 續(xù)10 public void processKeyEvent(KeyEvent e) 11 if(e.getID() = KeyEvent.KEY_PRESSED) 12 System.out.println(getSource() : +e.getSource();13 System.out.println(getID() : +e.getID();14 System.out.println(getWhen() : +e.getWhen();15 System.out.println(getKeyCode() : +e.getKeyCode();1
9、6 17 18 public static void main(String args) 19 Ex5_5_1 workStart=new Ex5_5_1();20 21 范例25:文件Ex5_5_2.java的功能是解釋KeyEvent類的類常量VK_A與事件的關(guān)系。 01 import java.awt.*;02 import java.awt.event.*;03 public class Ex5_5_2 extends Frame 04 public Ex5_5_2() 05 super(Ex5_5_2);06 setSize(350, 350);07 setVisible(true)
10、;08 enableEvents(AWTEvent.KEY_EVENT_MASK);09 范例25 續(xù)10 public void processKeyEvent(KeyEvent e) 11 if(e.getID() = KeyEvent.KEY_PRESSED) 12 if(e.getKeyCode() = KeyEvent.VK_A)13 System.out.println(This is VK_A event);14 else15 System.out.println(This is not VK_A event);16 17 18 public static void main(S
11、tring args) 19 Ex5_5_2 workStart=new Ex5_5_2();20 21 5-6 MouseEvent 類 java.awt.event.MouseEvent繼承自InputEventComponentEventAWTEvent EventObject Object,此類將與鼠標有關(guān)的事件封裝起來,包括單擊、移動等。鼠標是鼠標事件源(MouseEvent Source),MouseEvent還實現(xiàn)了MouseListener接口,即一個MouseEvent會被送到MouseListener中進行處理。范例26:文件Ex5_6_1.java的功能是解釋MouseE
12、vent類的類常量MOUSE_PRESSED與如何讀取鼠標事件構(gòu)造函數(shù)參數(shù)的內(nèi)容? 01 import java.awt.*;02 import java.awt.event.*;03 public class Ex5_6_1 extends Frame 04 public Ex5_6_1() 05 super(Ex5_6_1);06 setSize(350, 350);07 setVisible(true);08 enableEvents(AWTEvent.MOUSE_EVENT_MASK);09 范例26 續(xù)10 public void processMouseEvent(MouseEve
13、nt e) 11 if(e.getID() = MouseEvent.MOUSE_PRESSED) 12 System.out.println(getSource() : +e.getSource();13 System.out.println(getID() : +e.getID();14 System.out.println(getWhen() : +e.getWhen();15 System.out.println(getX() : +e.getX();16 System.out.println(getY() : +e.getY();17 System.out.println(getCl
14、ickCount() : +e.getClickCount();18 19 20 public static void main(String args) 21 Ex5_6_1 workStart=new Ex5_6_1();22 23 范例27:文件Ex5_6_2.java的功能是解釋類常量MOUSE_ENTERED和MOUSE_EXITED的應(yīng)用。 01 import java.awt.*;02 import java.awt.event.*;03 public class Ex5_6_2 extends Frame 04 public Ex5_6_2() 05 super(Ex5_6_2
15、);06 setSize(350, 350);07 setVisible(true);08 enableEvents(AWTEvent.MOUSE_EVENT_MASK);09 范例27 續(xù)110 public void processMouseEvent(MouseEvent e) 11 if(e.getID() = MouseEvent.MOUSE_ENTERED)12 System.out.println(ENTER DATA :);13 System.out.println(getSource() : + e.getSource();14 System.out.println(getI
16、D() : + e.getID();15 System.out.println(getWhen() : + e.getWhen();16 System.out.println(getX() : + e.getX();17 System.out.println(getY() : + e.getY();18 System.out.println(getClickCount() : + e.getClickCount();19 范例27 續(xù)220 if(e.getID() = MouseEvent.MOUSE_EXITED)21 System.out.println(EXIT DATA :);22
17、System.out.println(getSource() : + e.getSource();23 System.out.println(getID() : + e.getID();24 System.out.println(getWhen() : + e.getWhen();25 System.out.println(getX() : + e.getX();26 System.out.println(getY() : + e.getY();27 System.out.println(getClickCount() : + e.getClickCount();28 29 30 public
18、 static void main(String args) 31 Ex5_6_2 workStart=new Ex5_6_2();32 33 5-7 ContainerEvent 類 java.awt.event.ContainerEvent繼承自ComponentEvent AWTEvent EventObject Object,此類將與容器有關(guān)的事件封裝起來,包括組件的添加與刪除,當此類事件發(fā)生時會立即啟動ContainerEvent,并配合ContainerListener運行。5-8 FocusEvent 類 java.awt.event.FocusEvent繼承自Component
19、EventAWTEventEventObjectObject,此類將與輸入焦點有關(guān)的事件封裝起來,當此類事件發(fā)生時會立即啟動FocusEvent,并配合FocusListener運行。范例28:文件Ex5_8_1.java的功能是解釋單擊選中框架的Focus事件。01 import java.awt.*;02 import java.awt.event.*;03 public class Ex5_8_1 extends Frame 04 public Ex5_8_1() 05 super(Ex5_8_1);06 setSize(350, 350);07 setVisible(true);08
20、enableEvents(AWTEvent.FOCUS_EVENT_MASK);09 范例28 續(xù)10 public void processFocusEvent(FocusEvent e) 11 if(e.getID() = FocusEvent.FOCUS_GAINED)12 System.out.println(getSource() : +e.getSource();13 System.out.println(getID() : +e.getID();14 System.out.println(isTemporary() : +e.isTemporary();15 16 17 publ
21、ic static void main(String args) 18 Ex5_8_1 workStart=new Ex5_8_1();19 20 范例29:文件Ex5_8_2.java的功能是解釋單擊其他框架的Focus事件。 01 import java.awt.*;02 import java.awt.event.*;03 public class Ex5_8_2 extends Frame 04 public Ex5_8_2() 05 super(Ex5_8_2);06 setSize(350, 350);07 setVisible(true);08 enableEvents(AWTE
22、vent.FOCUS_EVENT_MASK);09 范例29 續(xù)10 public void processFocusEvent(FocusEvent e) 11 if(e.getID() = FocusEvent.FOCUS_LOST)12 System.out.println(getSource() : + e.getSource();13 System.out.println(getID() : + e.getID();14 System.out.println(isTemporary() : + e.isTemporary();15 16 17 public static void m
23、ain(String args) 18 Ex5_8_2 workStart=new Ex5_8_2();19 20 5-9 WindowEvent 類 java.awt.event.WindowEvent繼承自ComponentEvent AWTEvent EventObject Object,此類將與窗口有關(guān)的事件封裝起來,當此類事件發(fā)生時會立即啟動WindowEvent,并配合WindowListener運行。范例30:文件Ex5_9_1.java的功能是解釋使用類常量WINDOW_CLOSING與單擊框架右上方的“”按鈕的運行結(jié)果。 01 import java.awt.*;02 imp
24、ort java.awt.event.*;03 public class Ex5_9_1 extends Frame 04 public Ex5_9_1() 05 super(Ex5_9_1);06 setSize(350, 350);07 setVisible(true);08 enableEvents(AWTEvent.WINDOW_EVENT_MASK);09 范例30 續(xù)10 public void processWindowEvent(WindowEvent e) 11 if(e.getID() = WindowEvent.WINDOW_CLOSING)12 System.out.p
25、rintln(getSource() : +e.getSource();13 System.out.println(getID() : +e.getID();14 15 16 public static void main(String args) 17 Ex5_9_1 workStart=new Ex5_9_1();18 19 范例31:文件Ex5_9_2.java的功能是解釋如何通過單擊框架右上方的“”按鈕來關(guān)閉窗口。 01 import java.awt.*;02 import java.awt.event.*;03 public class Ex5_9_2 extends Frame 04 public Ex5_9_2() 05 super(Ex5_9_2);06 setSize(350, 350);07 setVisible(true);08 enableEvents(A
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四年級上冊數(shù)學(xué)《梯形》教案
- 2025至2030年EPS自熄型聚苯乙烯保溫板項目可行性研究報告
- 2025年針織漂洗行業(yè)深度研究報告
- 中華傳統(tǒng)音樂在當代社會的推廣與傳播
- 2025年腈綸覆底門口墊行業(yè)深度研究報告
- 數(shù)量關(guān)系真題帶答案
- 魯教版英語六上Unit 1 Good morning 第六課時 (單元整體+課時教學(xué)設(shè)計)
- 魯教版英語七上Unit 7 Im more outgoing than my sister Period2 (單元整體+課時教學(xué)設(shè)計)
- 人教部編版語文八年級下第5單元第20課《一滴水經(jīng)過麗江》(新課標單元整體教學(xué)設(shè)計+課時教學(xué)設(shè)計)
- 企業(yè)團隊拓展活動的設(shè)計與實施
- 2025屆高考作文備考訓(xùn)練:局中局外人生如棋
- 小紅書食用農(nóng)產(chǎn)品承諾書示例
- 《建筑工程設(shè)計文件編制深度規(guī)定》(2022年版)
- 23J916-1:住宅排氣道(一)
- 《機械制圖》期末考試題
- 制度管理辦法宣貫記錄表
- 郵政銀行流水
- 新版形高與材積速查表
- 職業(yè)衛(wèi)生管理制度和操作規(guī)程匯編
- JJG 162-2019飲用冷水水表 檢定規(guī)程(高清版)
- 紡織品生產(chǎn)企業(yè)代碼(MID)申請表
評論
0/150
提交評論