-
事件驅動編程
鎖定
為需要處理的事件編寫相應的事件處理程序。要理解事件驅動和程序,就需要與非事件驅動的程序進行比較。實際上,現代的程序大多是事件驅動的,比如多線程的程序,肯定是事件驅動的。早期則存在許多非事件驅動的程序,這樣的程序,在需要等待某個條件觸發時,會不斷地檢查這個條件,直到條件滿足,這是很浪費cpu時間的。而事件驅動的程序,則有機會釋放cpu從而進入睡眠態(注意是有機會,當然程序也可自行決定不釋放cpu),當事件觸發時被操作系統喚醒,這樣就能更加有效地使用cpu.
[1]
- 中文名
- 事件驅動編程
- 外文名
- Event Driven Programming
事件驅動編程處理程序
為需要處理的事件編寫相應的事件處理程序。代碼在事件發生時執行。
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都是事件驅動的,只有一些單片機可能是非事件驅動的。
[1]
- 參考資料
-
- 1. 事件驅動編程 .解道jdon.2013-05-26[引用日期2015-02-21]
- 詞條統計
-
- 瀏覽次數:次
- 編輯次數:13次歷史版本
- 最近更新: canguanxihu