處理程式
為需要處理的事件編寫相應的事件處理程式。代碼在事件發生時執行。
delphi和java編程特點
n事件(event)表示程式某件事發生的信號。事件分為:
o外部事件:由外部用戶動作產生的事件。例如,點擊滑鼠、按鍵盤。
o內部事件:由系統內部產生的事件。例如,定時器事件。
n源對象(source object)是產生事件的對象。
一般步驟
1、確定回響事件的元素
2、為指定元素確定需要回響的事件類型
3、為指定元素的指定事件編寫相應的事件處理程式
4、將事件處理程式綁定到指定元素的指定事件
每個事件對象包含與該事件相關的屬性。getSource()方法可以獲取事件的源對象。
產生的事件
用戶動作 | 源對象 | 事件類 |
單擊按鈕 | JButton | ActionEvent |
單擊複選框 | JCheckBox | ItemEvent, ActionEvent |
單擊單選框 | JRadioButton | ItemEvent, ActionEvent |
在文本框裡按回車鍵 | JTextField | ActionEvent |
選擇一個新項目 | JComboBox | ItemEvent, ActionEvent |
視窗打開、關閉等 | Window | WindowEvent |
滑鼠按下、釋放等 | Component | MouseEvent |
鍵盤按鈕、釋放等 | Component | KeyEvent |
要理解事件驅動和程式,就需要與非事件驅動的程式進行比較。實際上,現代的程式大多是事件驅動的,比如多執行緒的程式,肯定是事件驅動的。早期則存在許多非事件驅動的程式,這樣的程式,在需要等待某個條件觸發時,會不斷地檢查這個條件,直到條件滿足,這是很浪費cpu時間的。而事件驅動的程式,則有機會釋放cpu從而進入睡眠態(注意是有機會,當然程式也可自行決定不釋放cpu),當事件觸發時被作業系統喚醒,這樣就能更加有效地使用cpu.
再說什麼是事件驅動的程式。一個典型的事件驅動的程式,就是一個死循環,並以一個執行緒的形式存在,這個死循環包括兩個部分,第一個部分是按照一定的條件接收並選擇一個要處理的事件,第二個部分就是事件的處理過程。程式的執行過程就是選擇事件和處理事件,而當沒有任何事件觸發時,程式會因查詢事件佇列失敗而進入睡眠狀態,從而釋放cpu。
事件驅動的程式,必定會直接或者間接擁有一個事件佇列,用於存儲未能及時處理的事件。
事件驅動的程式的行為,完全受外部輸入的事件控制,所以,事件驅動的系統中,存在大量這種程式,並以事件作為主要的通信方式。
事件驅動的程式,還有一個最大的好處,就是可以按照一定的順序處理佇列中的事件,而這個順序則是由事件的觸發順序決定的,這一特性往往被用於保證某些過程的原子化。
目前windows,linux,nucleus,vxworks都是事件驅動的,只有一些單片機可能是非事件驅動的。