Java開發(fā)中的事件驅(qū)動模型的實例詳解

字號:

或許每個軟件從業(yè)者都有從學(xué)習(xí)控制臺應(yīng)用程序到學(xué)習(xí)可視化編程的轉(zhuǎn)變過程,控制臺應(yīng)用程序的優(yōu)點在于可以方便的練習(xí)某個語言的語法和開發(fā)習(xí)慣(如.net和java),而可視化編程的學(xué)習(xí)又可以非常方便開發(fā)出各類人機對話界面(HMI)??梢暬幊袒蛟S是一個初學(xué)者開始對軟件感興趣的開始,也可能是一個軟件學(xué)習(xí)的里程碑點,因為我們可以使用各類軟件集成開發(fā)環(huán)境(IDE)方便的在現(xiàn)成的界面窗口上拖放各類組件(Component),這類組件包括我們常見的按鈕(Button),單選按鈕(Radio Button),復(fù)選框等(Checkbox)。這樣的拖放式開發(fā)方式不但方便,而且窗口會立竿見影的顯示在我們的面前,這對于一個軟件初學(xué)者而言或許是一件非常有成就感的事情。
    但是很多軟件學(xué)習(xí)者在學(xué)習(xí)可視化開發(fā)的過程中,只是非常表面的來理解可視化編程,他們可能認為能夠使用拖放方式完成一個界面就非常值得稱道,但是很少有人會認真的去理解編程語言對于可視化編程組件的支持和整合,在Softworks軟件人才培訓(xùn)中心的兩年教學(xué)過程,我深刻的感受到了這一點,因此下文將會結(jié)合我的教學(xué)經(jīng)驗來講解可視化編程過程中為關(guān)鍵的“事件驅(qū)動模型”。
    1.什么是事件驅(qū)動模型?
    在講解事件驅(qū)動模型之前,我們現(xiàn)在看看事件驅(qū)動模型的三大要素:
    ·事件源:能夠接收外部事件的源體。
    ·偵聽器:能夠接收事件源通知的對象。
    ·事件處理程序:用于處理事件的對象。
    學(xué)員應(yīng)該要理解任何基于事件驅(qū)動模型的開發(fā)技術(shù)都包含以上三大要素,不管是.net還是java技術(shù),甚至是以前我們使用的Visual Basic和Delphi語言都有基于以上三大要素的事件驅(qū)動模型開發(fā)流程。
    現(xiàn)在我們來看一個生活中的示例,如果有一天你走在路上一不小心被天上掉下來的花瓶砸到了,并且暈死了過去。那么整個過程其實就是一個事件處理流程,而且我們可以非常方便的分析出剛才所提到的事件驅(qū)動模型中的三大要素。
    1.被砸暈的這個人其實就是事件源,因為他是能夠接受到外部的事件的源體。
    2.偵聽器就是這個人的大腦神經(jīng),因為它會感知到疼痛。
    3.事件處理就是這個人暈死了過去。
    由于事件驅(qū)動模型在我們?nèi)粘I钪惺菬o處不在的,因此Java和其他的編程語言都將這一過程運用到了可視化編程中了。
    2.Java編程語言中的事件驅(qū)動模型
    在Java編程技術(shù)中,常用的可視化編程當(dāng)屬Java Swing技術(shù),Java Swing為開發(fā)者提供了很多現(xiàn)成的組件,如:按鈕(JButton),單選按鈕(JRadioButton)等。為了管理用戶與組成程序圖形用戶界面的組件間的交互,必須理解在Java中如何處理事件。
    假設(shè)用戶單擊了程序圖形用戶界面中的一個按鈕,其實該按鈕就是這個事件的源(可以引發(fā)事件的物體)。所有的Java Swing對象都有感知自己被操作的能力,因此JButton按鈕也具有這樣能力。一個事件通常必須有一個源對象,這里就是JButton對象。當(dāng)單擊按鈕時,JButton組件類會生成一個用于存放該事件參數(shù)的ActionEvent的對象,該對象包含了事件及事件源的信息