bookjavavol-3圖形與網(wǎng)絡(luò)游戲開發(fā)ch05andpart_第1頁(yè)
bookjavavol-3圖形與網(wǎng)絡(luò)游戲開發(fā)ch05andpart_第2頁(yè)
bookjavavol-3圖形與網(wǎng)絡(luò)游戲開發(fā)ch05andpart_第3頁(yè)
bookjavavol-3圖形與網(wǎng)絡(luò)游戲開發(fā)ch05andpart_第4頁(yè)
bookjavavol-3圖形與網(wǎng)絡(luò)游戲開發(fā)ch05andpart_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余30頁(yè)可下載查看

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論