




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、PART 02事件處理Chapter 05底層事件5-1 簡(jiǎn)介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 簡(jiǎn)介在前面各章中,我們探討了如何繪圖?如何讀取圖片?但仍缺少精彩的交互性,譬如使用鍵盤改變移動(dòng)方向,這些都是令人興奮的交互操作。雖然讀者可能是資深玩家,但如果能徹底了解其中程序設(shè)計(jì)的奧妙,那將更有意義。5-2 Java事件架構(gòu) 當(dāng)默認(rèn)事件發(fā)生時(shí),無(wú)論程序在何處,進(jìn)行何
2、種動(dòng)作,它都將暫停,由系統(tǒng)將適當(dāng)?shù)馁Y源(包括CPU與時(shí)間)分配給它,以優(yōu)先支持該事件的運(yùn)行。 Java支持的底層事件類有:ComponentEventContainerEventFocusEventKeyEventMouseEventWindowEvent圖5-1圖5-15-3 AWTEvent 類java.awt.AWTEvent繼承自EventObject Object,此類是所有底層事件類的基礎(chǔ)類。5-4 ComponentEvent 類 ponentEvent繼承自AWTEvent EventObject Object,此類將組件層次的事件封裝起來(lái),如移動(dòng)(Move)、改變大小(Res
3、ize)、隱藏(Hid)或顯示(Show)等 。范例22:文件Ex5_4_1.java的功能是解釋移動(dòng)框架的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)的事件封裝起來(lái),擊打鍵盤是按鍵事件的來(lái)源(KeyEvent Source),它還實(shí)現(xiàn)了KeyList
7、ener接口,即一個(gè)KeyEvent會(huì)被送到KeyListener中進(jìn)行處理。范例24:文件Ex5_5_1.java的功能是解釋以鍵“A”作為KEY_PRESSED按鍵事件時(shí),如何讀取按鍵事件構(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,此類將與鼠標(biāo)有關(guān)的事件封裝起來(lái),包括單擊、移動(dòng)等。鼠標(biāo)是鼠標(biāo)事件源(MouseEvent Source),MouseEvent還實(shí)現(xiàn)了MouseListener接口,即一個(gè)MouseEvent會(huì)被送到MouseListener中進(jìn)行處理。范例26:文件Ex5_6_1.java的功能是解釋MouseE
12、vent類的類常量MOUSE_PRESSED與如何讀取鼠標(biāo)事件構(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)的事件封裝起來(lái),包括組件的添加與刪除,當(dāng)此類事件發(fā)生時(shí)會(huì)立即啟動(dòng)ContainerEvent,并配合ContainerListener運(yùn)行。5-8 FocusEvent 類 java.awt.event.FocusEvent繼承自Component
19、EventAWTEventEventObjectObject,此類將與輸入焦點(diǎn)有關(guān)的事件封裝起來(lái),當(dāng)此類事件發(fā)生時(shí)會(huì)立即啟動(dòng)FocusEvent,并配合FocusListener運(yùn)行。范例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)的事件封裝起來(lái),當(dāng)此類事件發(fā)生時(shí)會(huì)立即啟動(dòng)WindowEvent,并配合WindowListener運(yùn)行。范例30:文件Ex5_9_1.java的功能是解釋使用類常量WINDOW_CLOSING與單擊框架右上方的“”按鈕的運(yùn)行結(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ò)單擊框架右上方的“”按鈕來(lái)關(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)紅奶茶品牌區(qū)域代理權(quán)轉(zhuǎn)讓協(xié)議
- 計(jì)算機(jī)四級(jí)安全策略試題及答案
- 2025年中國(guó)白蠟?zāi)拘袠I(yè)市場(chǎng)前景預(yù)測(cè)及投資價(jià)值評(píng)估分析報(bào)告
- 澳新電商市場(chǎng)入駐與本地化客服服務(wù)合同
- 電子商務(wù)SPV股權(quán)合作開發(fā)合同
- 模具專利權(quán)及版權(quán)聯(lián)合許可補(bǔ)充協(xié)議
- 唇腭裂公益協(xié)議書
- 電商物流配送服務(wù)創(chuàng)新與應(yīng)用合作協(xié)議
- 小動(dòng)物認(rèn)領(lǐng)協(xié)議書
- 擦玻璃安全協(xié)議書
- 河南省鄭州市2023-2024學(xué)年高一下學(xué)期6月期末數(shù)學(xué)試題(無(wú)答案)
- 14J936變形縫建筑構(gòu)造
- TD/T 1012-2016 土地整治項(xiàng)目規(guī)劃設(shè)計(jì)規(guī)范(正式版)
- 2024年共青團(tuán)入團(tuán)積極分子考試題庫(kù)(附答案)
- 魚類卵子受精機(jī)制與精子激活
- 植物營(yíng)養(yǎng)學(xué)智慧樹知到期末考試答案章節(jié)答案2024年黑龍江八一農(nóng)墾大學(xué)
- 員工競(jìng)業(yè)禁止保證金協(xié)議書
- 小學(xué)數(shù)學(xué)項(xiàng)目化設(shè)計(jì)教學(xué)案例
- 燃?xì)夤こ添?xiàng)目全生命周期管理與維保策略
- 下肢感染護(hù)理查房
- 2023年4月自考02333軟件工程試題及答案含解析
評(píng)論
0/150
提交評(píng)論