語言程序設(shè)計(jì)資料:JAVA_【java編程課件】第14章 JavaBeans組件模型_第1頁
語言程序設(shè)計(jì)資料:JAVA_【java編程課件】第14章 JavaBeans組件模型_第2頁
語言程序設(shè)計(jì)資料:JAVA_【java編程課件】第14章 JavaBeans組件模型_第3頁
語言程序設(shè)計(jì)資料:JAVA_【java編程課件】第14章 JavaBeans組件模型_第4頁
語言程序設(shè)計(jì)資料:JAVA_【java編程課件】第14章 JavaBeans組件模型_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第14章 JavaBeans組件模型,主要內(nèi)容,14.1 軟件組件模型 14.2 JavaBean概述 14.3 JavaBeans的特性 14.4 JavaBeans的屬性 14.5 API支持 14.6 JavaBeans的事件處理 14.7開發(fā)一個(gè)JavaBean并打包,14.1 軟件組件模型,軟件組件是分離的、可重用的軟件部分,可以方便的將其裝配以創(chuàng)建各種應(yīng)用程序,提高了開發(fā)效率。 JavaBeans技術(shù)是一種跨體系結(jié)構(gòu)和平臺(tái)的API,用于創(chuàng)建動(dòng)態(tài)Java軟件組件。 軟件組件大致可以分為兩類: 可視化軟件組件 非可視化軟件組件,組件模型還負(fù)責(zé)提供下列服務(wù),自檢; 事件處理; 持久化;

2、布局; 應(yīng)用程序生成器支持,主要內(nèi)容,14.1 軟件組件模型 14.2 JavaBean概述 14.3 JavaBeans的特性 14.4 JavaBeans的屬性 14.5 API支持 14.6 JavaBeans的事件處理 14.7開發(fā)一個(gè)JavaBean并打包,14.2 JavaBean概述,JavaBean是可以復(fù)用的平臺(tái)中立的軟件組件,是一組用于構(gòu)建可重用組件的Java類庫??梢詫⒁唤MJavaBean裝配成應(yīng)用程序或Applet 一個(gè)JavaBean由三部分組成:屬性、方法和事件,JavaBeans的屬性,JavaBean的屬性,通常是組件對(duì)象中的私有數(shù)據(jù)成員,外界不能夠直接訪問,需

3、要通過專門的訪問(accessor)方法才能訪問 負(fù)責(zé)讀取的accessor方法稱為getter方法,負(fù)責(zé)寫入的accessor方法稱為setter方法。 public String getName(); public void setName(String value,主要內(nèi)容,14.1 軟件組件模型 14.2 JavaBean概述 14.3 JavaBeans的特性 14.4 JavaBeans的屬性 14.5 API支持 14.6 JavaBeans的事件處理 14.7開發(fā)一個(gè)JavaBean并打包,14.3 JavaBeans的特性,內(nèi)省(Introspection) 是組件可以向外界

4、暴露其支持的方法,事件和屬性的機(jī)制,也是支持在程序構(gòu)建工具中發(fā)現(xiàn)其方法、事件和屬性的機(jī)制。 組件模型通過兩種方式支持內(nèi)?。?1)命名模式(Design Pattern),在對(duì)Bean的屬性,事件,方法等特性命名的時(shí)候遵循一定的設(shè)計(jì)模式,這樣,依賴于Java的反射API 中的Introspector類就能夠識(shí)別出Bean的特性。 2)BeanInfo類,是一個(gè)實(shí)現(xiàn)了接口BeanInfo的類,在其中列出了Bean向外界暴露的方法,屬性和事件,JavaBeans的特性2,屬性(Properties) Bean的內(nèi)部狀態(tài)、外觀和行為特征,在設(shè)計(jì)時(shí)可以改變。程序設(shè)計(jì)工具可以通過Bean的內(nèi)省機(jī)制來發(fā)現(xiàn)。

5、 定制(Customization) Bean通過發(fā)布其屬性使其可以在設(shè)計(jì)時(shí)被定制。有兩種方式實(shí)現(xiàn)定制:屬性編輯器和Bean定制器。 通信(Communication) Beans之間通過事件進(jìn)行交互,一個(gè)Bean通過向另一個(gè)Bean注冊(cè),能夠接受它感興趣的事件。程序構(gòu)建工具可以檢測(cè)到一個(gè)Bean可以接受和發(fā)送的事件。 持續(xù)(Persistence) 使Bean可以存儲(chǔ)和恢復(fù)其狀態(tài)。一個(gè)Bean的屬性被修改后,能夠通過對(duì)象的持續(xù)化機(jī)制保存下來,并可以在需要的時(shí)候恢復(fù),主要內(nèi)容,14.1 軟件組件模型 14.2 JavaBean概述 14.3 JavaBeans的特性 14.4 JavaBean

6、s的屬性 14.5 API支持 14.6 JavaBeans的事件處理 14.7開發(fā)一個(gè)JavaBean并打包,JavaBeans的屬性,屬性的類型分為 簡(jiǎn)單 索引 綁定 限制屬性。 一個(gè)屬性可以屬于多個(gè)類型,例如,限制屬性還應(yīng)為綁定屬性,1)簡(jiǎn)單屬性,簡(jiǎn)單屬性是指對(duì)象內(nèi)部的簡(jiǎn)單變量,它表示一個(gè)單獨(dú)的值,并且通過getter方法和setter方法的組合進(jìn)行讀取和設(shè)置。 用于訪問簡(jiǎn)單屬性的命名模式如下: public T getN(); public void setN(T value); 其中,T是屬性的類型,N是屬性的名稱。如下面的代碼: public String getName(); p

7、ublic void setName(String s,2)索引屬性,索引屬性是用于處理數(shù)組及其單個(gè)元素的屬性,它包含類型相同的元素??赏ㄟ^整型下標(biāo)訪問這些元素,因此它們成為索引屬性。 public T getN (int index); public T getN( ); public void setN(int index, T value); public void setN(T values,3)綁定屬性,綁定屬性是在被修改時(shí)向其它對(duì)象提供通知的屬性。綁定屬性需要向Bean注冊(cè)外部監(jiān)聽器,一旦修改綁定屬性的值,監(jiān)聽器就會(huì)得到通知。 具有綁定屬性的Bean應(yīng)支持事件監(jiān)聽器的注冊(cè)方法,注冊(cè)

8、監(jiān)聽器的方法采用實(shí)現(xiàn)PropertyChangeListener接口的對(duì)象作為其唯一參數(shù)。 public void addPropertyChangeListener(PropertyChangeListener l) public void removePropertyChangeListener(PropertyChangeListener l,3)綁定屬性,具體見程序,4)限制屬性1,限制屬性與綁定屬性類似,它們?cè)诒恍薷臅r(shí)都會(huì)發(fā)出通知。但是與綁定屬性不同的是,注冊(cè)為限制屬性監(jiān)聽器的對(duì)象可以否決屬性的修改。通常限制屬性還應(yīng)為綁定屬性。 在修改限制屬性的值之前,用戶必須通過外部監(jiān)聽器檢查此值

9、,可以接受或拒絕修改。如果拒絕屬性值的修改,則拋出PropertyVetoException異常,包含此屬性的Bean將處理異常。任何時(shí)候出現(xiàn)異常,Bean都必須將屬性的值返回到其原始值;如果沒有異常,可為此屬性發(fā)布屬性修改通知,4)限制屬性2,限制屬性的setter方法應(yīng)支持PropertyVetoException異常。假設(shè)有一個(gè)限制屬性weight,其accessor方法聲明如下: public int getWeight( ) ; public void setWeight(int weight) throws java.beans.PropertyVetoException,4)限制

10、屬性3,將限制屬性連接至監(jiān)聽器的方法與綁定屬性類似。具有限制屬性的Bean必須支持對(duì)事件監(jiān)聽器的注冊(cè)方法,這些方法將VetoableChangeListener對(duì)象作為其唯一參數(shù)。 public synchronized void addVetoableChangeListener(VetoableChangeListener l); public synchronized void removeVetoableChangeListener(VetoableChangeListener l,4)限制屬性4,見程序,主要內(nèi)容,14.1 軟件組件模型 14.2 JavaBean概述 14.3 Ja

11、vaBeans的特性 14.4 JavaBeans的屬性 14.5 API支持 14.6 JavaBeans的事件處理 14.7開發(fā)一個(gè)JavaBean并打包,14.5 API支持,JavaBean的API主要是包java.beans中的一些類和接口,可以分為三組: 功能類:Beans ,PropertyChangeEvent,PropertyEditorManager,Introspector等; 描述類:所有的以Descriptor結(jié)尾的類。 支持類:PropertyChangeSupport,VetoableChangeSupport,PropertyEditorSupport, Sim

12、pleBeanInfo等,PropertyChangeEvent,public PropertyChangeEvent(Objectsource, StringpropertyName, ObjectoldValue, ObjectnewValue) 它的參數(shù)為: source,事件源,激發(fā)事件的Bean; propertyName,表示修改的屬性名稱; oldValue,表示屬性的舊值; newValue,表示屬性的新值; 任何時(shí)候Bean的綁定屬性的修改,都將通過調(diào)用方法propertyChange( )將PropertyChangeEvent類的實(shí)例發(fā)送至監(jiān)聽器,PropertyChan

13、geSupport,Bean體系結(jié)構(gòu)提供了PropertyChangeSupport類,簡(jiǎn)化了屬性修改事件的激發(fā)。要向多個(gè)獨(dú)立的監(jiān)聽器激發(fā)事件,只需創(chuàng)建PropertyChangeSupport對(duì)象。它的構(gòu)造函數(shù)如下: public PropertyChangeSupport(Object srcBean) firePropertyChange(PropertyChangeEventevt) addPropertyChangeListener(PropertyChangeListenerlistener) removePropertyChangeListener(PropertyChangeL

14、istenerlistener,PropertyChangeListener,ProperyChangeListener是一個(gè)接口。作為綁定屬性變化的監(jiān)聽器必須實(shí)現(xiàn)此接口。它先向Bean注冊(cè),此后對(duì)Bean屬性的任何修改都將調(diào)用監(jiān)聽器的propertyChange()方法,此方法是該接口唯一的方法,定義如下: propertyChange(PropertyChangeEventevt,PropertyVetoException,任何否決性監(jiān)聽器否決Bean屬性的修改,都將拋出PropertyVetoException。它的構(gòu)造函數(shù)如下: PropertyVetoException(String

15、msg, PropertyChangeEventevt) 此構(gòu)造函數(shù)有兩個(gè)參數(shù): msg,不接受Bean屬性修改的原因 evt,表示屬性修改事件 該類中唯一的方法是getPropertyChangeEvent(),它返回被否決的屬性修改事件,VetoableChangeSupport,提供方法向多個(gè)監(jiān)聽器激發(fā)事件。它的構(gòu)造函數(shù)如下: public VetoableChangeSupport(ObjectsourceBean) addVetoableChangeListener(VetoableChangeListenerlistener) fireVetoableChange(Property

16、ChangeEventevt) throws PropertyVetoException removeVetoableChangeListener(VetoableChangeListenerlistener,VetoableChangeListener,VetoableChangeListener是一個(gè)接口,所有要成為可否決屬性變化的監(jiān)聽器都應(yīng)該實(shí)現(xiàn)此接口。它僅包含一個(gè)propertyChange()方法,任何時(shí)候注冊(cè)了此接口的Bean 屬性發(fā)生變化,都將調(diào)用此方法,如果屬性的變化被否決,則將拋出PropertyVeotException。它的定義如下: public void vetoableChange(PropertyChangeEventevt) throws PropertyVetoException,主要內(nèi)容,14.1 軟件組件模型 14.2 JavaBean概述 14.3 JavaBeans的特性 14.4 JavaBeans的屬性 14.5 API支持 14.6 JavaBeans的事件處理 14.7開發(fā)一個(gè)JavaBean并打包,14.6 JavaBeans的事件處理,使用Java的授權(quán)事件處理模型 如何為Bean自定義事件 編寫事件類 編寫監(jiān)聽器接口和實(shí)現(xiàn)類 編寫B(tài)ean ,包含一個(gè)觸發(fā)事件的方法 見程序,主要內(nèi)容,14.1 軟件組件

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論