精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1...

118
精精Java 2精精精精 <精精精 精精精 精精> C2 精精精精精精精精精
  • date post

    22-Dec-2015
  • Category

    Documents

  • view

    261
  • download

    4

Transcript of 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1...

Page 1: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

Java 2 < >精彩 程式設計 吳逸賢、吳目誠 編著

C2 物件與事件控制技巧

Page 2: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

2

目錄

C2-1 認識事件 C2-2 以時間事件來控制物件 C2-3 滑鼠控制技巧 C2-4 鍵盤控制技巧

Page 3: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

3

C2-1  認識事件

改寫視窗程式的架構 事件與事件傾聽者 事件類別 事件傾聽者 視窗事件

Page 4: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

4

改寫視窗程式的架構:

在開始介紹事件的觀念之前,希望能先引導讀者改變程式的架構(因為這一章之前的程式碼架構,與這一章之後的程式架構不一樣)。

Page 5: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

5

在 main() 程式中建立一個 frame 物件,然後設定frame 物件屬性的程式碼如下:

若將新撰寫的程式類別繼承 JFrame ,而在 main() 視窗中使用所建立的程式類別來建立程式物件,則這個物件便具有 JFrame 的特性,因此在程式中,就可以直接使用繼承自 JFrame 的方法和屬性,或者實作介面。

Page 6: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

6

直接使用繼承自 JFrame 的方法和屬性的程式架構如下:

Page 7: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

7

事件與事件傾聽者:

所謂事件( Event )是指軟體在執行的過程中,所可能發生的情況。

事件( Event )是物件導向程式非常重要的機制,是建立程式和使用者間溝通的橋樑。

在程式執行過程中,發生啟動程式、結束程式、按下滑鼠鍵、放開滑鼠鍵、按下鍵盤、打開視窗及關閉視窗等事件時,程式就可以根據發生的事件內容,執行特定的程式碼。

Page 8: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

8

事件的發生與處理:

Java 的事件處理是一種委託式( delegation )事件處理模式,事件的發生與處理,是由事件類別( Event Class )產生的物件( Event Object )與事件傾聽者( Event Listener )所構成,其關係如下圖所示:

Page 9: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

9

事件作業過程如下:

當我們移動滑鼠指標在按鈕(事件來源)上按一下滑鼠鍵時,按鈕會送出一個物件給 Action 事件傾聽者( ActionListener )。

ActionListener 事件傾聽者收到委託的物件後,便會啟動 actionPerformed() 方法,執行指定的工作。

Page 10: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

10

物件與處理事件的方法:

在程式中要使用事件傾聽者 ActionListener ,必須實作( implements ) ActionListener 。

按鈕物件要委託 ActionListener 處理事件,要使用 add ActionListener() 方法。

Page 11: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

11

按鈕物件委託 ActionListener 處理事件的程式碼如下:

Page 12: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

12

Page 13: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

13

程式執行結果如下:

Page 14: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

14

事件類別:

Java 的事件類別大多數繼承自 java.awt.AWTEvent 類別。

Page 15: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

15

繼承關係如下圖所示:

Page 16: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

16

事件類別名稱的功能與產生時機說明如下:

Page 17: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

17

其他同樣繼承自 EventObject 類別的事件類別:

其他同樣繼承自 EventObject 類別的事件類別,包括 CaretEvent 、 ChangeEvent 、 HyperlinkEvent 、 LineEvent 、 ListDataEvent 、ListSelectionEvent 、 MenuEvent 、 PopupMenuEvent 、 TableColumnModelEvent 、 TableModelEvent 、 TreeExpansionEvent 、 TreeModelEvent 、 TreeSelectionEvent 、 UndoableEditEvent 等等,這些事件類別都存放在 javax.swing.event 程式套件中。

Page 18: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

18

事件的特性:

根據事件的特性,可分為低階事件( low-level events ) 與語意事件( semantic events )兩種。

低階事件類別包括 ComponentEvent 、 ContainerEvent 、 FocusEvent 、 KeyEvent 、 MouseEvent 、 PaintEvent 、 WindowEvent 等。

語意事件類別包括 ActionEvent 、 AdjustmentEvent 、ItemEvent 、 TextEvent 、 HierarchyEvent 、 InputMethodEvent 、 InvocationEvent 等。

一般來說,由視窗系統所產生,或滑鼠、鍵盤等產生的事件為低階事件,此外則為語意事件。

Page 19: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

19

事件傾聽者:

EventListener (事件傾聽者)是一個介面( interface ,請參考 B2 ), EventListener是所有事件傾聽者介面的上層介面。

Page 20: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

20

EventListener 包含下列子介面 -1 :

ActionListener ‘ 接收 ActionEvent AdjustmentListener ‘ 接收 AdjustmentEvent ComponentListener ‘ 接收 ComponentEvent ContainerListener ‘ 接收 ContainerEvent FocusListener ‘ 接收 FocusEvent HierarchyListener ‘ 接收 HierarchyEvent HyperlinkListener ‘ 接收 HyperlinkEvent InputMethodListener ‘ 接收 InputMethodEvent ItemListener ‘ 接收 ItemEvent KeyListener ‘ 接收 KeyEvent

Page 21: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

21

EventListener 包含下列子介面 -2 :

ListDataListener ‘ 接收 ListDataEvent ListSelectionListener ‘ 接收 ListSelectionEvent MenuListener ‘ 接收 MenuEvent MouseListener ‘ 接收 MouseEvent MouseMotionListener ‘ 接收 MouseEvent MouseWheelListener ‘ 接收 MouseEvent PopupMenuListener ‘ 接收 PopupMenuEvent TableColumnModelListener ‘ 接收 TableColumn

ModelEvent TableModelListener ‘ 接收 TableModelEvent TextListener ‘ 接收 TextEvent

Page 22: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

22

EventListener 包含下列子介面 -3 :

TreeExpansionListener ‘ 接收 TreeExpansionEvent TreeModelListener‘ 接收 TreeModelEvent TreeSelectionListener ‘ 接收 TreeSelectionEvent UndoableEditListener ‘ 接收 UndoableEditEvent WindowFocusListener ‘ 接收 WindowEvent WindowListener ‘ 接收 WindowEvent WindowStateListener ‘ 接收 WindowEvent

Page 23: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

23

事件聽者數到事件時的執行方法:

當事件傾聽者收到事件時,會分別執行不同的方法。

例如 ActionListener 傾聽者介面會執行 actionPerformed() 方法,因此在程式中就要實作actionPerformed() 方法,而使用 KeyListener傾聽者介面,則程式中就要實作 keyPressed() 、 keyReleased() 和 keyTyped() 等方法。

Page 24: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

24

視窗事件:

使用 WindowListener (視窗事件傾聽者)來接收視窗事件,必須實作下列七個方法:windowActivated() ‘ 視窗作用中windowDeactivated() ‘ 視窗沒有作用windowOpened() ‘ 視窗已經開啟windowClosed() ‘ 視窗已經關閉windowClosing() ‘ 關閉視窗中windowIconified() ‘ 最小化視窗windowDeiconified() ‘ 取消最小化視窗

Page 25: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

25

前面章節中,有許多程式中都是利用下列程式碼來關閉視窗,並結束程式:

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Page 26: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

26

使用 WindowListener 來接收關閉視窗的事件,進而結束視窗程式,程式碼如下:

Page 27: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

27

Page 28: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

28

Page 29: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

29

執行程式畫面顯示如下:

Page 30: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

30

透過 WindowAdapter 類別來關閉視窗,程式碼如下:

Page 31: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

31

執行程式,選擇關閉視窗鈕就可以直接關閉視窗程式,畫面顯示如下:

Page 32: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

32

C2-2  以時間事件來控制物件

利用時間事件變化來移動物件 同時控制多個不同移動速度的元件 應用三角函數製作圓形運動 畫面上彈跳的小球

Page 33: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

33

利用時間事件變化來移動物件:

時間事件可以用來控制視窗上元件的變化,例如製作出元件緩緩上升的效果,畫面顯示如下:

Page 34: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

34

時間事件:

時間事件的時間單位為千分之一秒,若設定為 500 ,則每 1/2 秒觸發一次。

Page 35: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

35

以下就是製作氣球元件緩緩上升效果的程式碼:

Page 36: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

36

Page 37: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

37

Page 38: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

38

同時控制多個不同移動速度的元件:

同時要控制多個不同移動速度的元件有兩種方法。

一種是使用一個時間物件,然後設定各元件不同的移動間隔;另一種是每一個元件分別對應一個時間物件,而分別設定不同的時間間隔。

Page 39: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

39

控制多個不同移動速度的畫面顯示如下:

Page 40: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

40

以下就是同時控制多個不同移動速度元件的程式碼:

Page 41: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

41

Page 42: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

42

應用三角函數製作圓形運動:

應用內建的三角函數,包括 sin 、 cos 、 tan 、atan…… 等等,可以應用這些函數來計算座標的位置。

例如:圓形運動、拋物線運動等軌道座標計算。

Page 43: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

43

以下就是圓形軌道運動的執行畫面:

Page 44: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

44

以下就是應用三角函數計算圓形軌道的程式碼:

Page 45: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

45

Page 46: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

46

Page 47: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

47

畫面上彈跳的小球:

應用座標變化,可以製作出圖形彈跳的效果。

Page 48: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

48

以下就是製作彈跳效果的程式碼:

Page 49: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

49

Page 50: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

50

Page 51: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

51

執行程式,圖形就會有彈跳的效果:

Page 52: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

52

C2-3  滑鼠控制技巧

滑鼠事件與事件傾聽者 顯示滑鼠座標位置 用滑鼠指標拉動佈景 簡易打地鼠程式 拖移物件與配對 座標位置記錄器

Page 53: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

53

滑鼠事件與事件傾聽者:

MouseListener 和 MouseMotionListener 是負責接收滑鼠事件的傾聽者介面。

Page 54: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

54

MouseListener 必須實作下列五個方法:

mousePressed(MouseEvent e) ‘ 按下滑鼠鍵mouseReleased(MouseEvent e) ‘ 放掉滑鼠鍵mouseEntered(MouseEvent e) ‘ 滑鼠進入按鍵區

mouseExited(MouseEvent e) ‘ 滑鼠離開按鍵區

mouseClicked(MouseEvent e) ‘ 按了一下滑鼠鍵

Page 55: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

55

MouseMotionListener 則必須實作下列兩個方法:

mouseMoved(MouseEvent e) ‘ 移動滑鼠mouseDragged(MouseEvent e) ‘拖移滑鼠

Page 56: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

56

下面就是 MouseListener 接收滑鼠事件的程式碼:

Page 57: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

57

Page 58: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

58

Page 59: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

59

完成圖:

執行程式時,當滑鼠在按鍵上發生按下、放掉、進入、移開等事件時,視窗上會顯示事件的訊息。

Page 60: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

60

下面就是 MouseMotionListener 接收滑鼠事件的程式碼:

Page 61: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

61

Page 62: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

62

執行程式,畫面顯示如下:

Page 63: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

63

利用 InputEvent 事件判斷到底是按下左鍵還是右鍵 :

Page 64: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

64

以下就是測試滑鼠按鍵的程式碼:

Page 65: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

65

Page 66: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

66

Page 67: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

67

完成圖:

當滑鼠在滑鼠按鍵區按下滑鼠左鍵,視窗上方會顯示“按了一下左鍵的訊息”;當滑鼠在滑鼠按鍵區按下滑鼠右鍵,視窗上方會顯示“按了一下右鍵的訊息”。

Page 68: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

68

滑鼠事件與事件傾聽者的注意事項:

使用 MouseListener 和 MouseMotionListener時,不論使用哪一個方法,都必須把其它沒有用到的方法輸入到程式中,否則,程式將無法執行。

Page 69: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

69

顯示滑鼠座標位置:

在應用滑鼠事件來執行程式時,經常需要滑鼠的座標位置來輔助。

Page 70: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

70

以下就是顯示滑鼠座標位置的程式碼:

Page 71: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

71

Page 72: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

72

完成圖:

在視窗中任意移動滑鼠,就會顯示滑鼠座標的位置。

Page 73: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

73

用滑鼠指標拉動佈景:

佈景和滑鼠指標的互動,也是製作動態網頁經常使用到的技巧。

Page 74: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

74

以下就是製作用滑鼠指標拉動佈景的程式碼:

Page 75: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

75

Page 76: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

76

Page 77: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

77

完成圖:

Page 78: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

78

簡易打地鼠程式:

這個例子的操作規則是畫面上會顯示小老鼠,操作者只要在小老鼠上按一下滑鼠左鍵,就可以得到 10 分。

Page 79: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

79

以下就是設計簡易打地鼠程式的程式碼:

Page 80: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

80

Page 81: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

81

Page 82: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

82

執行程式,畫面顯示如下:

Page 83: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

83

拖移物件與配對:

使用滑鼠指標來拖移( drag )是經常使用到的控制技巧,以下這個例子將說明拖移物件和檢查位置等兩個技巧。

Page 84: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

84

拖移物件和檢查位置的程式碼如下:

Page 85: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

85

Page 86: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

86

Page 87: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

87

Page 88: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

88

Page 89: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

89

完成圖:

拖移水果到正確的位置,水果就會放在該處,若放錯,則會彈回到原來的位置。

Page 90: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

90

座標位置記錄器:

設計軟體時,若需要找出畫面上的座標位置,可以設計一個簡單的程式來幫忙自動產生座標串列。

Page 91: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

91

以下就是製作座標記錄器的程式碼:

Page 92: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

92

Page 93: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

93

Page 94: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

94

完成圖:

拖移紅色圓形物件到想要記錄座標的位置,然後按一下滑鼠左鍵,就會將座標位置記錄在下方的文字方塊區內。

Page 95: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

95

C2-4  鍵盤控制技巧

鍵盤事件傾聽者與 按鍵值 使用 Enter 鍵輸入答案利用鍵盤按鍵拉動佈景 模擬鍵盤按鍵狀態

Page 96: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

96

鍵盤事件傾聽者與按鍵值:

KeyListener 是負責接收鍵盤事件的傾聽者介面, KeyListener 必須實作( implements )下列三個方法:keyPressed(KeyEvent evt) ‘ 按下按鍵keyTyped(KeyEvent evt) ‘ 按一下按鍵keyReleased(KeyEvent evt) ‘ 放掉按鍵

Page 97: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

97

英文字母與數字鍵:

Page 98: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

98

Page 99: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

99

數字板( Keypad ):

Page 100: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

100

功能鍵:

Page 101: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

101

其它按鍵:

Page 102: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

102

使用 Enter 鍵輸入答案:

使用 JTextField 物件,可以讓使用者直接輸入資料,不過無法直接按   鍵,而下面這個例子就可以在按   鍵後開始檢查答案。

Page 103: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

103

以下就是使用    鍵來輸入答案的程式碼:

Page 104: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

104

Page 105: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

105

Page 106: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

106

Page 107: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

107

Page 108: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

108

完成圖:

完成後執行程式,依顯示的加法題目,在鍵盤上輸入答案,然後按下鍵盤上的 鈕,確認答案,就會出現答對了或答錯了的回饋畫面。

Page 109: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

109

利用鍵盤按鍵拉動佈景:

前一節曾經介紹使用滑鼠指標來拉動佈景的技巧,當然,利用鍵盤按鍵也可以拉動佈景。

Page 110: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

110

以下就是利用鍵盤按鍵拉動佈景的程式碼:

Page 111: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

111

Page 112: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

112

Page 113: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

113

完成圖:

在鍵盤上按下  或  鍵,佈景就會被拉動了!

Page 114: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

114

模擬鍵盤按鍵狀態:

所謂模擬鍵盤按鍵狀態,是指在螢幕上顯示鍵盤上的按鍵為按下的狀態,或放掉的狀態,例如當同時按下鍵盤上的 A 、 B 鍵時,畫面上的 A 、 B 鍵會呈現被按下的狀態。

Page 115: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

115

以下就是製作模擬鍵盤按鍵狀態互動程式的程式碼:

Page 116: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

116

Page 117: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

117

Page 118: 精彩 Java 2 程式設計 C2 物件與事件控制技巧. 2 目錄 C2-1 認識事件 C2-1 認識事件 C2-2 以時間事件來控制物件 C2-2 以時間事件來控制物件 C2-3

118