前言
最近,Eclipse開源項目終於推出了期待已久的Visual Editor Project(VEP)。VE項目使得功能強大的eclipse平台在java開發方面又增加了一個可視化java組件開發利器。它讓java開發人員再也不用依賴其它的IDE產品來做GUI介面方面的工作。所有的開發,從應用程式介面到商務邏輯的開發,現在都可以在eclipse平台上完成。本文將引導開發人員如何安裝配置並使用Visual Editor。
關於Visual Editor
開始介紹之前,來看一個筆者用Visual Editor(以下簡稱VE)設計的一個java程式介面:
怎麼樣,其可視化的介面設計,一點也不遜於其它的Java可視化介面開發工具。
Visual Editor是一個開源的eclipse編輯器。它同JDT、PDE等其它eclipse的工具項目一樣,是一個全新的eclipse工具項目。它可以進行可視化的編輯java GUI程式,也能編輯可視化的Java Bean組件。它能與eclipse的Java Editor整合在一起,當在Visual Editor中編輯圖形介面時,會立即反饋到java Editor中的代碼。反之亦然。
VE是一個可視化開發的一個framework,目前的版本的VE是0.5.0RC1版,本版本的VE支援Swing和AWT的可視Java組件開發。由於這個framework設計的具有通用性,它也可以很容易的實現C++或其它語言下可視化開發。其將來的版本(從1.0開始),將會支援SWT的開發。更多的關於Visual Editor的資訊,請看參考資料的相關連結。
由於Visual Editor是用純java編寫的,所以它應該可以在任何作業系統上運行。但當前的VE版本是0.5.0RC1,只在windows和linux平台上經過測試。所以如果你使用的是這兩種作業系統之外的其它作業系統,你應該先閱讀VE的readme檔案,安裝和使用VE前,必須先安裝以下版本的eclipse和相關支援類庫:
Eclipse build 2.1.2 (build page) (download zip)
EMF build 1.1.1: (build page) (download zip)
GEF Build 2.1.2: (build page) (download zip)
為了方便中國的開發人員,eclipse也提供了一個中文語言套件,下載安裝後,elcipse環境將變成全中文的介面。在本文中,筆者用的eclipse也安裝了此中文語言套件。之後就可以從以下地址下載Visual Editor了:
http://download.eclips.org/vep….
下載後的VE是一個zip檔案,請將其壓縮包中plugins和features目錄下的內容解壓到eclipse安裝目錄的相應目錄中即可。如果你的eclipse是運行著的,請關閉並重新啟動eclipse。
開始一個設計任務
現在,所有程式安裝完成,筆者將用一個例子,來講解Visual Editor的使用。在這個例子中,筆者要設計一個郵件發送面板,下面是它的草圖:
此面板包括髮送人,接收人,郵件主題,郵件內容以及發送和清除按鈕
進入Visual Editor
啟動eclipse平台。剛開始,你可能覺得eclipse並沒有什麼變化。先別急,請建立一個項目,點擊"檔案"菜單下的"建立"子功能表,選擇並建立一個新的"java項目"。然後在工具列上的"建立Java類" 表徵圖上,點擊右邊的小箭頭 ,將展開如的菜單:
在此菜單上,多了一個"Visual Calss"的子功能表,這就是進入Visual Editor的入口之一。點擊"Visual Class",彈出如下的對話方塊:
在此對話方塊中,要求輸入類的名稱(如標記○1)位置),在這裡我們輸入"MessagePanel",以及你想要繼承的可視類(如標記○2位置)。你可以選擇繼承來自swing或AWT的任何介面組件,如要繼承其它類型的類,請選擇"other"並點擊"瀏覽"按鈕來選擇你要繼承的類。在此處,我們選擇"panel"和Swing選項,繼承JPanel,然後點擊"完成"按鈕,大家就可以見到Visual Editor的介面了:
由於eclipse工作台高度的可定製性,讀者現在看到的介面並非VE初始的布局,而是經過筆者按喜好的方式重新布局過的透視圖,但是這並不會影響讀者理解本文內容。
中1所示,是VE的工具面板,提供"選取"、"框選"等選擇工具。還有Swing組件,Swing容器,Swing菜單以及AWT控制項設計工具。在面板下方有"Design"和"Source"兩個頁簽,用來切換設計介面和Java原始碼視圖。
圖中2是VE的工具列,包括工具面板中的一些常用按鈕。
圖中3是"Java Beans"視圖和"屬性"視圖,兩個視圖可以切換顯示。"Java Beans"視圖用樹形結構即時顯示設計中用到的各種Java Bean組件層次。而"屬性"視圖顯示顯示當前所選中的Java bean組件的屬性值列表,你可以在此列表中編輯各項Java Bean的屬性值。
圖中灰色矩形地區即是我們最開始選擇的JPanel,所有的工作就從它開始。
擺設Swing組件
做過Swing GUI介面設計的人都知道,Java應用程式介面上的元素位置是用LayoutManager來管理的。JPanel的預設布局管理器是FlowLayout。VE目前支援所有的傳統的布局管理器(這裡所指的傳統布局管理器是指JDK1.4之前的布局管理器。可惜的是VE目前還不支援從JDK1.4開始有的SpringLayout)。
要設定JPanel的layout,請先在設計介面中選中JPanel,再切換到"屬性"視圖,找到"layout"屬性,如所示:
圖中顯示了JPanel的預設LayoutManager。在"layout"屬性的右邊,可以通過點擊組合框來指定不同類型的LayoutManager。不同的LayoutManager會在屬性編輯器中顯示不同的參數,如果選擇GridLayout,屬性編輯器中的layout屬性將顯示另外幾種不同的參數,如如示:
先前的FlowLayout的三個參數alignment, horizontal gap和vertical gap變成了GridLayout的另外四種參數:columns, horizontal gap, rows, vertical gap。
為了方便設計,筆者在這個例子中將採用null,即不用任何LayoutManager來設計介面。
布局設定好後,就可以在JPanel上擺置各種Swing組件了。按照我們最開始設計的草圖,介面上要擺上四個Label:From, To, Subject, Message。以及四個文本組件,其第四個應該是TextArea, 用於編輯多行文本。我們在工具面板上選好相關組件,然後在JPanel上拖選出一個矩形,組件即按相應大小和位置顯示在此矩形地區。再在"屬性"視圖中編輯每個JLabel和JButton的"text"屬性為相應的值。現在來看看下面筆者"畫"出來的介面:
看看,設計的如何?筆者不是畫家,"畫"出來的介面顯得有些淩亂。沒關係,VE也提供一些工具按鈕來讓我們調整各個組件的位置。請點擊VE工具列上的"Show alignment window"按鈕:
顯示如的視窗:
通過此視窗,可以將所選組件向上下左右各個方向對齊。還可以使所選組件具有相同高度和寬度。來看看經過調整位置後的介面布局:
現在看起來是不是美觀多了?
添加事件處理
經過前面的步驟,VE的可視化設計的任務就基本上完成了。在我們設計的介面中,有"Send"和"Clear"按鈕。我們再來看看VE是如何為它們添加事件處理的。
在設計介面的"Send"按鈕上點擊滑鼠右鍵,快顯功能表,如:
在"Event"功能表項目中,可以看到一個"actionPerformed"事件。如果要添加其它類型的事件,可以點擊"Add Events"選擇其它類型的事件。我們點擊"actionPerformed"事件後,在"Java Beans"視圖的"jButton-"Send""組件下面,多了一個"actionPerformed"事件類型,如所示:
在"Java Beans"視圖中,選中"actionPerformed"事件,再VE的視窗中,從"Design"切換到"Source"視圖。
在標記1的代碼地區,就是我們剛剛添加的按鈕事件。筆者在事件中調用了一個send方法,中標記2代碼地區。具體的發送郵件的代碼筆者在這裡就不實現了。
同樣的方法,一樣可以為另一個按鈕"Clear"添加事件。
在程式中使用自訂的組件
在前面我們設計好了自己的Java組件,現在我們來看看如何在自己的程式中――一個視窗中來調用這個組件。
使用前面介紹的方法,在工具列上點擊"建立Java類"按鈕,建立一個JFrame的Visual Class類。你也可以在通過菜單"檔案"->"建立"->"Visual Class"來尋一個JFrame類。在這裡,我們將這個類命名為"MyApp"。
當VE視窗出現時,可以看到一個空白的JFrame顯示在設計檢視中。此時,點擊VE的工具面板上的" Choose Bean"按鈕,然後在彈出的對話方塊中輸入我們設計的Java組件的類名"MessagePane",再點擊"確定"。這時,當我們的滑鼠移到JFrame上時,JFrame會用綠色的線條切分成五份,如所示:
這是因為JFrame的預設LayoutManager是BorderLayout,在VE中,如果在工具面板上選好Java組件,當滑鼠移到有特定LayoutManager的容器組件上時(在中容器組件是一個JFrame),VE會用適當的形式指示你當前滑鼠移至上方的位置。在在VE告訴我們現在處在BorderLayout的中心位置,此時再在該位置點擊一次,我們選好的Java組件即安放到此位置。
用VE設計好程式介面,就可以切換到"Source"視圖進行具體的代碼的編碼了。在此我們就不累述了。
定製VE的環境
之前的講解,大家學到了如何用VE來進行可視化的Java介面設計。為了適應不同的開發人員,VE也提供了一些選項來讓開發人員設計自己喜好的VE環境。
請開啟菜單"視窗"->"喜好設定"->"Java"->"Visual Editor",此時出現VE的各種喜好設定介面。由於筆者安裝的eclipse中文語言套件早於VE發布,所以此介面仍然是英文介面。在這裡,VE的喜好設定分為三類:"Appearance","Code Generation","Pattern Style"。下面結合圖形分別介紹:
1.外觀(Appearance)設定:
此面板中可以設定這此內容:
(1) 設定視覺編輯器和原始碼編輯器的布局,一種是上下分隔的布局,另一種是用頁答進行切換的布局(即本文例圖中所見到的樣式)。
(2) 設定是否顯示"屬性"視圖和"Java Beans"視圖。
(3) 設定設計時Swing的介面風格。
2.代碼產生(Code Generation)設定
此面板包括以下內容:
(1) 設定是否為新運算式產生注釋和try{}…catch()塊。
(2) 設定可視設計介面和代碼編輯器之間的代碼同步時間。
3.代碼模板風格(Pattern Style)設定
此面板包括以下內容:
(1) VE所用的存取Java Bean的代碼風格。
(2) VE初始化時嘗試使用的初始化方法。VE目前已提供了對Jbuilder、NetBean等其它IDE產品視覺編輯器產生的Java組件代碼初始化方式的支援。
總結
行文至此,我們從VE的安裝到Java組件設計以及VE環境的設定,基本上已對eclipse的全新工具Visual Editor作了一個全面的瞭解。有了Visual Editor,我們所有的開發工作,從圖形化使用者介面到商務邏輯,全部可以在eclipse平台上完成。