NetBeans6.0中的用戶界面設計

Beans 綁定、Swing 應用程序框架以及您一直夢寐以求的 IDE 功能

  自從 NetBeans 5.0 以來人們談論最多的創新功能之一就是 Project Matisse Form Editor。很多人都認爲 Matisse 是各種 IDE 類別和技術中最好的用戶界面設計器。由於這個原因,很多開發者都開始或已經開始使用 NetBeans

  有了這個軟件,就有了改進和提高的無限空間。如本文中所述,在 NetBeans 6.0 中,熟練的開發者和新的開發者將發現很多新的 Matisse 功能,這些功能有助於改進 Swing 應用程序的開發。

Beans 綁定和 Swing 應用程序框架

  基於最新的 JCP 規範 Beans 綁定 SR 295 Swing 應用程序框架 JSR 296),桌面開發者們有了幾個新的錦囊妙計;而且他們還能夠進行更高效的開發。普通 Swing 應用程序開發者從 NetBeans Swing 應用程序框架的改進中獲得了更多利益,而平臺開發者也不例外。平臺開發者在 NetBeans 平臺中已經具有一個基於 Swing 的應用程序框架,該框架比 JSR 296 提供的功能多多了。使用 Beans 綁定支持,開發人員獲益良多。

Beans 綁定支持

  Beans 綁定允許避開千篇一律地編寫代碼將用戶界面組件中的數據複製到數據類或 JavaBeans,或將數據類或 JavaBeans 中的數據複製到用戶界面組件。。隨着新的 Beans 綁定的不斷改進,您現在可以右鍵單擊 UI 元素以及訪問 Bind 上下文菜單項。例如,選擇 javax.swing.JTextField 的此項菜單項將顯示文本的首選綁定屬性(請參見 1)。可以通過屬性檢查器的 Binding 選項卡訪問其他屬性( 2)。

1. Beans 綁定菜單項。

 

2. 設置 JtextField Beans 綁定選項。

 

  一旦選擇了要綁定的屬性之後,將顯示一個對話框,在該對話框中,您可以選擇目標 JavaBean。然後,您可以使用 Beans 綁定表達式語言輸入一個表達式。其語法與 JSP EL 非常類似。除了手動輸入表達式之外,使用一個靈巧的選擇器(可以作爲下拉列表或組合框訪問)開發者們可以通過展開屬性和子屬性來快速構建表達式。

  當運行該應用程序時,當選定的 UI 組件失去焦點或用戶按 Enter 時,該組件便更新其綁定的組件。主要是開發者不再需要使用大量事件處理代碼來管理此類操作和其他操作。

Swing 應用程序框架支持

  Swing 應用程序框架提供快速構建完整桌面應用程序的機制。NetBeans 6 IDE 中的該框架提供了進一步的完整支持,提供了一組標準的圖標,如複製、粘貼和剪切。這比從 Swing 組件中將應用程序分解爲各個部分要好,不需要每次都提供啓動或關閉應用程序的獨立解決方案、基本操作或事件、自定義圖標、資源管理器、會話存儲等。

  要在 NetBeans 6 中創建 Swing 應用程序框架項目,請選擇 File|New Project 並在 General 類別下,選擇 new Java Desktop Application 項目模板。撰寫本文時,可用的應用程序模板有兩個:Basic Database(參見 3)。在將來的版本中將包含其他模板。例如,正在考慮建立新的模板,用來創建基於 Swing 應用程序框架的Web 客戶端應用程序。

3. 選擇桌面應用程序模板。

  Basic 模板生成常規的 Swing 應用程序,該應用程序具有簡單的功能,如剪切、複製、粘貼、保存和新建。可以使用這個模板輕鬆創建類似於記事本或 KWrite 的簡單應用程序(請參見 4)。

4. 使用 Basic 模板生成的應用程序示例。

  Database 模板允許用戶創建 CRUD 數據庫應用程序。和 Apache Derby/JavaDB HSQLDB 一起使用,相當於增強型 Microsoft Access

  對於我來說,Swing 應用程序框架支持最合適開發比較簡單的應用程序。將來使用 JSR 277Java 模塊系統)可能會在這方面變得更好。但是,只是模塊系統也不能提供一個具有 NetBeans 平臺所提供的所有組件和實用程序的框架。對於更復雜的應用程序,我建議您在 NetBeans 平臺上構建。還在考慮基於 Swing 應用程序框架的應用程序到基於平臺的應用程序的途徑,但是在編寫本文時這方面內容還沒有什麼具體實現。

注意:Swing 應用程序框架和 NetBeans 平臺都是 Swing 框架。Swing 應用程序框架提供應用程序生命週期管理、會話管理(例如,重新啓動應用程序時將窗口存儲在同一個位置中)、資源管理器、操作、存儲、應用程序上下文以及同步和異步任務。NetBeans 平臺提供所有這些功能以及各種其他功能,包括允許模塊在其他應用程序項目之間安裝它們自己的 UI 菜單、操作和服務的功能強大的模塊/插件系統。

更多新功能

  NetBeans 6 中的其他新功能包括新的可視菜單設計器、受保護代碼定製器改進、組件對齊和改進的自由設計首選間距和複製粘貼支持。

  NetBeans 5.5 開發者已經可以使用添加到版本 6 中的其他功能作爲對舊版本的更新。這些功能包括自動國際化、可視本地化、具有外觀支持的預覽、相對字體定義、從項目瀏覽器或 UI 中拖放組件以及上下文敏感的幫助欄和前/後聲明代碼編輯器。在即將發佈的 IDE 版本中,將會全部集成所有這些功能並且即裝即用。

可視菜單設計器

  以前版本的 Matisse 支持的應用程序菜單設計功能有限;您需要使用 Inspector 窗口創建菜單項和子菜單。現在可以在 UI 設計器中直觀地選擇和編輯菜單組件。這從兩個方面有助於 Java 桌面應用程序:第一,正在編輯哪個菜單和菜單項變得更明確,第二,不需要預覽表單或運行應用程序來查看在運行時菜單的外觀。 5 中便是正在執行操作的可視菜單設計器。

5. 新的可視菜單設計器。

受保護代碼定製器改進

  NetBeans 使用受保護代碼的機制Matisse 使用該機制以便生成的代碼不會被更改,並且不會受到開發者的破壞,從而允許可視設計器繼續工作。但是,有時這個原則有點太過嚴格,因此對受保護代碼的限制一直是 NetBeans 郵件列表中的常見抱怨。

  NetBeans 6 中,這方面將變得更好,您將能夠採用很多方法更改受保護的代碼部分。例如,通過初始化和屬性/bean 配置幫助您解決計時操作和方法調用的問題。

  下面是修改受保護代碼的一些選項,所有這些選項都可以通過 Properties 窗口的 Code 選項卡訪問(另請參見 6):

§ Post-Listener-Code在設置所有 bean 的所有屬性並添加所有偵聽器之後添加。

§ Pre-Adding Code and Post-Adding Code在將組件添加到父容器(如 JPanel JFrame)之前和之後分別添加。

§ After-All-Set Code 在完成組件設置之後添加。

6. 受保護代碼定製器改進

  與其說新的前/後聲明代碼編輯器是推進開發的有利助手,不如說是必不可少的一個工具。從 Java 5 開始,現在開發者可以在 Java 源代碼中註釋很多不同的內容,對於需要註釋的庫或技術,Matisse 必須允許開發者在某種程度上設置這些註釋。還可以通過 Properties 窗口的 Code 選項卡中的 Pre-Declaration Code 字段添加註釋;並且有一個 Post-Declaration Code 字段可以使用。

  NetBeans 6 附帶一個新的代碼定製器,使用該定製器您可以將源代碼更輕鬆地加入到受保護的代碼部分。可以通過右鍵單擊設計器中的 UI 表單,然後選擇 Customize Code 來訪問該定製器。將彈出一個具有 Java 編輯器的對話框。有關示例,請參見 7

7. 代碼定製器對話框


組件對齊

  將組件與中心軸線對齊變得更容易。現在,Matisse 允許將一組選定的組件按選定的第一個組件的軸線對齊。可以水平對中,也可以垂直對中。通常,必須先選中多個組件,然後按照寬度最大的組件進行中心對齊。還可以選擇將組件與其父容器進行水平和垂直對齊。

更多間距

  NetBeans 6 之前,自由設計佈局管理器支持一個首選間距放置組件。在 6.0 中,支持三個首選間距。首選間距是組件之間的首選間隔,並且可以對組件的任何一邊使用該首選間距,以便放置組件快速、美觀,如 8 所示。對於可能喜歡對組件之間的間距進行更多控制的開發者來說,具有三個選擇比較方便。

Figure 8. 支持自由設計首選間距三個間距,而不是一個間距

更好地支持複製/粘貼

  使用自由設計佈局時,在 6.0 之前的版本中,複製和粘貼會產生比較可怕的後果。無論您選擇的組件數量多少,都會將所有複製的組件放置在 UI 表單上的位置 [0,0] 處。現在,這個問題已經解決了。現在粘貼副本不會弄亂佈局,因爲可以將其按照可設定的間距與先前添加的組件對齊。複製之後組件還保持它們的佈局(請參見 9)。

9. 在自由設計中改進的複製/粘貼支持(多次粘貼組件)。

自動國際化和可視本地化

  以前版本的 NetBeans 需要幾個額外步驟才能國際化和本地化 UI。現在,這個過程被簡化了。在以前的版本中,您必須設置每個單獨的 UI 元素才能從正確的資源包中獲得值。然後要對該包實現本地化,您需要手動創建單獨的包文件或本地化的條目,輸入正確語言環境的文本,然後格式化相應的文件(例如,使用不同的編碼)。

   NetBeans 6.0 中,您現在可以在進行 UI 設計的過程中,讓 Matisse 自動國際化應用程序。這意味着對於正常情況下需要手動國際化的每個資源,Matisse 自動將 UI 設計器中提供的值添加到資源包中。對所有 UI 元素都執行該操作。

  可視本地化功能與自動國際化功能協同工作。您可以右鍵單擊 Inspector 窗口的樹的頂部表單節點,在 Properties 窗口中找到 Design Locale 組合框,然後選擇一個語言環境或添加一個新的語言環境。

  選擇 Design Locale 之後,您就可以編輯 UI 中的文本,就像正常情況下編輯表單一樣。在 UI 中輸入值的時會按照 Design Locale 的設置自動完成本地化的過程。可以更改語言環境以及重新編輯表單以設置新選定語言環境的值。使用 NetBeans 6 創建完全國際化的 UI 就是如此簡單(請參見 10)。

10. 訪問 Automatic Resource Management 組合框以設置要國際化的資源管理樣式,訪問 Design Locale 以設置在 Matisse 中編輯 UI 時使用的語言環境。更改語言環境和重新編輯 UI 以本地化用戶界面。非常漂亮,而且非常容易!

 

預覽外觀支持

  NetBeans 6.0 之前,對於普通的 Swing 應用程序,沒有允許在設計器中設置項目外觀的機制。由開發者通過添加相應的代碼來設置應用程序的外觀。

  通過源代碼設置普通 Swing 應用程序的外觀非常簡單。但是,如果沒有允許設置設計外觀的表單編輯器,開發人員將不能看到應用程序在運行時所呈現的各種不同的外觀。現在,這不再是問題。

  NetBeans 6.0 中,可以選擇各種現有的外觀預覽表單。在 Inspector 窗口中,開發人員可以右鍵單擊表單容器節點,或與 Other Components 節點(該節點帶有表單擴展類的名字,例如JFrame JDialog JPanel)及其下面的節點(其同胞節點)級別相同的節點。然後展開 Preview Design 子菜單並選中外觀。然後便可以預覽具有選定外觀的表單。

  右鍵單擊 UI 設計器中的表單還會使 Preview Design 子菜單可以訪問。

相對字體定義

  您曾經想過要定義 UI 字體比整個系統或應用程序的字體稍大或稍小一些嗎?由於不需要爲每個組件設置字體,因此這樣會比較方便。但是,可以將特定組件的字體設置爲不同的相對大小,或者設置爲與主要應用程序或系統字體不同的字體。

  在最新版本的 Matisse 中,這個操作很快捷。您選擇表單上的一個 UI 組件之後,在 Properties 窗口中,單擊 font 屬性右側的按鈕。將顯示字體編輯器。在字體編輯器中,您可以選擇“Derive the font from the default font”複選框,然後選擇字體類型。可以相對於默認字體調整該字體的大小;該大小也可以爲絕對值。無論該大小如何,字體都不是硬編碼的,而是在運行時確定的。該功能使用 Font.deriveFont() 方法。

將組件從項目瀏覽器拖動到 UI

  在以前版本的 NetBeans 中,開發人員必須將開發項目中的 UI 組件安裝到表單編輯器的調色板中才能在 UI 表單中使用這些組件。這會造成修改組件的各種問題,並且在項目 UI 中使用子項目中的組件時會更復雜。但是,現在這個問題已經得到了很好地解決。

  現在,您可以使用作爲子項目或依賴關係的庫。在父項目中創建新表單,然後將子項目 UI 控制/類從項目層級中拖放到某個表單上,而無需將它們添加到調色板或全局 IDE 中。這實質上項目級別的調色板項目:更漂亮、更整潔的解決方案。

上下文敏感的幫助欄

  誰說您不能教想學的老狗新花招?全新的上下文敏感的幫助欄,既可以幫助新的開發者,也可以幫助熟練的開發者。由於它可以使新用戶快速熟悉 Matisse 功能,因此,新用戶可能會發現它更有用。全新的幫助欄提供關於選定組件可以執行功能的上下文提示,或當前正在使用的功能的上下文提示。即使經驗豐富的用戶可能也會發現一些他們不知道的新快捷方式或功能。

結束語

  Matisse NetBeans 社區最近迅速發展的原因之一,隨着每個版本的發佈,它會變得越來越好。6.0 版本沒有什麼不同,最新的功能就是極大地提高了 Swing 應用程序的開發效率。每個人都應該嘗試一下。

  NetBeans 6.0 Matisse 功能開發正在進行中,目前其他功能已在使用中。最引人注目的是,可能會在最終版本中解決生成的 UI 代碼的重構問題,以及添加很多其他新功能和改進。

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章