bookjavavol-3圖形與網絡游戲開發ch05andpart_第1頁
bookjavavol-3圖形與網絡游戲開發ch05andpart_第2頁
bookjavavol-3圖形與網絡游戲開發ch05andpart_第3頁
bookjavavol-3圖形與網絡游戲開發ch05andpart_第4頁
bookjavavol-3圖形與網絡游戲開發ch05andpart_第5頁
免費預覽已結束,剩余30頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、PART 02事件處理Chapter 05底層事件5-1 簡介5-2 Java事件架構5-3 AWTEvent 類5-4 ComponentEvent 類5-5 KeyEvent類5-6 MouseEvent類5-7 ContainerEvent類5-8 FocusEvent類5-9 WindowEvent類5-10 習題5-1 簡介在前面各章中,我們探討了如何繪圖?如何讀取圖片?但仍缺少精彩的交互性,譬如使用鍵盤改變移動方向,這些都是令人興奮的交互操作。雖然讀者可能是資深玩家,但如果能徹底了解其中程序設計的奧妙,那將更有意義。5-2 Java事件架構 當默認事件發生時,無論程序在何處,進行何

2、種動作,它都將暫停,由系統將適當的資源(包括CPU與時間)分配給它,以優先支持該事件的運行。 Java支持的底層事件類有:ComponentEventContainerEventFocusEventKeyEventMouseEventWindowEvent圖5-1圖5-15-3 AWTEvent 類java.awt.AWTEvent繼承自EventObject Object,此類是所有底層事件類的基礎類。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 續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 續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,此類將與按鍵有關的事件封裝起來,擊打鍵盤是按鍵事件的來源(KeyEvent Source),它還實現了KeyList

7、ener接口,即一個KeyEvent會被送到KeyListener中進行處理。范例24:文件Ex5_5_1.java的功能是解釋以鍵“A”作為KEY_PRESSED按鍵事件時,如何讀取按鍵事件構造函數參數的內容? 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 續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與事件的關系。 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 續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,此類將與鼠標有關的事件封裝起來,包括單擊、移動等。鼠標是鼠標事件源(MouseEvent Source),MouseEvent還實現了MouseListener接口,即一個MouseEvent會被送到MouseListener中進行處理。范例26:文件Ex5_6_1.java的功能是解釋MouseE

12、vent類的類常量MOUSE_PRESSED與如何讀取鼠標事件構造函數參數的內容? 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 續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的應用。 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 續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 續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,此類將與容器有關的事件封裝起來,包括組件的添加與刪除,當此類事件發生時會立即啟動ContainerEvent,并配合ContainerListener運行。5-8 FocusEvent 類 java.awt.event.FocusEvent繼承自Component

19、EventAWTEventEventObjectObject,此類將與輸入焦點有關的事件封裝起來,當此類事件發生時會立即啟動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 續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 續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,此類將與窗口有關的事件封裝起來,當此類事件發生時會立即啟動WindowEvent,并配合WindowListener運行。范例30:文件Ex5_9_1.java的功能是解釋使用類常量WINDOW_CLOSING與單擊框架右上方的“”按鈕的運行結果。 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 續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的功能是解釋如何通過單擊框架右上方的“”按鈕來關閉窗口。 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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論