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

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論