程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2EE >> 利用Java Beans在應用程序中創建組件

利用Java Beans在應用程序中創建組件

編輯:J2EE

-
JavaBeans模塊使開發人員能夠創建稱之為組件的軟件單元(也就是我們熟知的beans).你可以把beans加載在更復雜的組件、Java小型應用程序(applets)或應用程序上。JavaBeans廣泛應用於IDE應用程序,使你能夠很容易地可視化組合組件並動態修改它的屬性。

Beans是動態的,允許你改變和定制它。在JavaBean Builder Tool裡的設計模塊中,你能利用 Bean的屬性窗口來可視化定制和保存(持久)bean。你也可以從toolbox中選擇一個bean,把它拖拽到窗體中,再修改它的外觀和行為與定義它和其他Bean的交互關系,並把它和其他Bean組合到一個applet或應用程序、或新的Bean裡面去。


Beans在功能和用途上應用很廣。比如說,以下項都用到了beans:


·圖形化用戶接口(GUI)


·非可視化beans,比如拼寫檢測器


·別的類型,比如applets


JavaBean規范


一個JavaBean其實就是一個Java類。JavaBeans API規范書中針對它的方法和屬性定義了一個簡單的規范,你必須在Java類中用這些方法和屬性,否則就不能成為一個JavaBean。Bean的特征(也就是屬性、方法、事件)都應能被帶有bean的應用程序發現,或者被IDE應用程序發現,比如IBM Eclispse或Intellij IDEA。這種發現過程被稱之為內省(introspection)。


Beans以以下二種方式支持內省(introspection):


它們根據特定的規則也就是熟知的設計模式來命名特征。Java.bean.Introspector類通過檢查設計模式來發現bean特征。Java.beans.Introspector類依賴核心的Java反射API。


它們利用一個相關聯的bean信息類來顯式提供屬性、方法和事件信息,這個類實現BeanInfo接口,它能顯式的提供給那些應用程序創建工具(Builder Tool)要用到的特征。


屬性是bean的外觀和行為的特征,你可以在設計的時候修改。Bean Builder工具通過內省(introspection)發現它的屬性並提供給外部用於處理。Bean對外提供屬性的操作,所以它們能在設計的時候來定制。定制有二種方式:一是通過使用屬性編輯器,另外一個是通過使用功能更強大的bean定制器。


Beans使用事件與其他beans進行通信。接受事件的bean(監聽bean)和激活事件的bean(源bean)通過注冊聯系起來。Bean Builder工具能檢測一個bean並判斷哪個beans能激活事件(發送),哪個能處理事件(接收)。


持久性(Persistence)確保beans能保存和恢復它們的狀態。修改一個bean的屬性後,你可以保存bean的狀態並能在以後恢復到未改變時的狀態。JavaBean體系結構利用Java對象序列化來支持持久性。Bean的方法和Java的方法沒有區別,你也可以從別的beans或者一個腳本環境中去調用這些方法。缺省情況下,所有public方法都是對外可調用的。

為了確保一個java類成為JavaBean,有以下四個簡單的也是必須的規范:

·這個類是可序列化的(能夠持久保存也能恢復狀態),也就是,它必須實現Java.io.Serializable接口。


·這個類必須帶有一個無參數的構造方法。


·這個類的屬性必須通過使用get、set和其他按標准命名規范來命名的方法來操作:getProperty()和setProperty()用於非布爾屬性,isProperty()用於布爾屬性。這些方法稱之為getters和setters


·這個類包含所有必須的事件處理方法。


大部分JavaGUI工具包(AWT,Swing和SWT)的組件都使用JavaBeans規范。這樣保證GUI的編輯器比如Eclipse Visual Editor或者別的Java IDE來維持組件的層次結構,並通過getters和setters來訪問它們的屬性。


JavaBeans事件和監聽器


一個事件集定義一種事件,包括它通信什麼,需要產生什麼和監聽事件是什麼。一個事件集由以下幾部分組成:


事件監聽器接口


這個接口定義一個或多個方法,這些方法必須通過一個希望接收這種事件的類來實現。這些方法通常需要一個或多個參數,包括事件對象。


事件對象


事件對象從事件源傳到監聽器。包括所有必須的參數,這些參數能被監聽器得到,包括事件源的起點。所有事件都是源自Java.util.EventObject類


事件注冊方法,包括addListener() 和removeListener(),允許一個組件管理所有已注冊對這個特定事件感興趣的組件。這個方法就一個參數,也就是對這個事件感興趣的對象。這個對象必須實現監聽器接口。


Java.awt包提供許多預定義好的事件集,例如焦點事件、鼠標事件、鼠標移動事件、鍵盤事件等等。這些事件集都包含了監聽器接口和事件對象。


比如,我們用鍵盤事件為例。鍵盤事件集包括KeyListener接口(這個接口定義了keyPressed(),keyReleased()和keyTyped方法)與KeyEvent類。任何要產生鍵盤事件的組件都必須定義addKeyListener()和removeKeyListener()注冊方法。我們可以注意到對於key事件的命名模版的規范:事件名Key出現在監聽器接口、方法(可選)、事件對象和注冊方法中。你可以使用相同的命名規范給你自己創建的所有事件集命名。


預定義事件集(比如key事件集)通常對於你的開發需要已經足夠了。然而,你也可以創建你自己定義的事件集,只要你想要。


假如你想讓你的一個組件產生事件,你必須定義事件集、事件對象、事件注冊方法,這樣別的已經注冊對這個事件感興趣的組件能夠在事件激發後被通知到。


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved