■ NetBeans 6.0 為 Java 提供的新功能和擴展功能
NetBeans 6.0 提供了眾多新功能和擴展功能,眾所周知的 GUI 設計器(Matisse 項目)也從 5.5 版本開始得到了極大的增強。此外,由 於整合了 Profiler, 5.5 版也變得更加容易使用。下表列出了 Java SE 的新功能和擴展功能。
GUI 設計器 自動國際化功能Java 6 界面
支持 L&F
上下文幫助
使用語言指令高亮字體
支持 JSR-296 Swing 應用程序框架
支持 JSR-295 Beans 綁定
Java Web Start Java 應用程序項目的 Java Web Start 化運行環境的轉換
Profiler Profiler 已作為 Java SE 標准默認安裝,不需要另行安裝。HeapWalker
Drill down 圖
Profiler Point
編輯器的擴展 NetBeans 6.0 的編輯器得到了大量改進。操作界面的改善
代碼自動完成
語法高亮顯示
代碼生成
即時更名
實時模板
另外,編輯器還增加了以下外圍功能。
任務列表
本地歷史記錄
變更比較查看器
異同點邊側欄
有關這些新功能和擴展功能的詳細信息,請參閱
http://www.netbeans.org/features/index_ja.html
現在,嘗試利用 Swing 應用程序框架,開發一個簡單的獲取圖像的應用程序。實現在 Flickr(flickr.com)進行關鍵字搜索,獲取並且顯 示單幅圖像的功能。(要運行此 Demo,需要獲取 Flickr API 的 API KEY,並能連接到互聯網。)
■Swing 應用程序框架 (JSR-296)
Swing 應用程序框架可用於創建 Swing 應用程序。框架給人的印象總是非常繁瑣且難以使用,但 Swing 應用程序框架卻是一個小巧、沒有 特定設置文件且簡單易用的框架。https://appframework.dev.java.net/ 正在進行該框架的進一步開發工作。
Swing 應用程序框架 https://appframework.dev.java.net/
JSR-296 http://jcp.org/en/jsr/detail?id=296
下面簡要介紹該框架的基本情況。首先來看看該框架的整體結構,這對後續使用 NetBeans 的 GUI 設計器會有一定幫助。
圖 1 Swing 應用程序框架的整體結構
Swing 應用程序框架主要由以下 5 部分構成,並能提供較為復雜的生命周期管理和 Session 管理等。此外,可以簡單地重用添加了 @Action 注釋的 Action。不需要使用特定的方法和文件,就可以使用基於標准的資源綁定。
生命周期管理 提供 Application, SingleFrameApplication 類應用程序的生命周期管理
launch()
initialize()
startup()
ready()
exit()
shutdown()
Session 管理 窗口尺寸的管理窗口位置的管理
ActionActionListener 調換
@Action 注釋
任務 異步 Action任務監視器
任務的塊化
資源 普通的資源綁定資源注入
使本地化成為可能
■創建 Java 桌面應用程序項目
下面將演示如何使用 Swing 應用程序框架進行實際開發。GUI 設計器能夠基於 Swing 應用程序框架創建應用程序。可以通過以下方法創建 使用此框架的項目模板,隨後可以在模板中編寫實際代碼。
選擇“文件”>“新建項目”,這將打開“新建項目”對話框。
在“新建項目”對話框的“Java”選項中,選擇“Java 桌面應用程序”。
在隨後顯示的向導畫面的“項目名稱”字段中輸入“FlickrDemo”。
在“選擇應用程序 Shell”窗格中選擇“基本應用程序”。
點擊“完成”按鈕完成創建。
圖 2 項目創建向導
至此,已經完成了項目創建。主編輯器窗口中附加了 GUI 設計器的各種菜單欄。接下來先運行一下項目。按 F6 功能鍵,或者依次選擇“ 運行”>“運行主程序”來運行項目。試著改變應用程序的大小和窗口的位置,然後停止運行。再次運行項目,應用程序會在相同的位置, 以相同大小的窗口啟動。這就是 Swing 應用程序框架的 Session 管理功能。
在左側項目窗口的“源包”節點下,找到“FlickrDemoApp.java”文件,雙擊該文件在編輯窗口中顯示其代碼。使用FlickrDemoApp 繼承 SingleFrameApplication,使用 GUI 組件創建 startup() 方法,並且在 main() 方法中調用 launch() 方法,如以下代碼所示,。
/*
* FlickrDemoApp.java
*/
package flickrdemo;
import org.jdesktop.application.Application;
import org.jdesktop.application.SingleFrameApplication;
/**
* The main class of the application.
*/
public class FlickrDemoApp extends SingleFrameApplication {
/**
* At startup create and show the main frame of the application.
*/
@Override protected void startup() {
show(new FlickrDemoView(this));
}
/**
* Main method launching the application.
*/
public static void main(String[] args) {
launch(FlickrDemoApp.class, args);
}
}
■使用 GUI 設計器創建程序界面
使用 GUI 設計器實際創建一個圖形用戶界面。打開 FlickrDemoView.java,單擊“設計”選項卡,打開 GUI 設計器。
NetBeans 的 GUI 設計器附有組件面板,可以從組件面板上將組件托放到窗體上來創建應用程序界面。也可以將自己創建的組件添加到組件 面板中。
圖 3 GUI 編輯器
組件面板按照內容分類,使用十分簡單。
圖 4 GUI 設計器組件面板
可以將組件簡單地置於需要的位置,再通過移動、放大縮小等操作,來創建如以下向導所示的窗體。
圖 5 GUI 設計器的設計區域
如上圖所示,將 JLabel、JTextField 和 JButton 組件置於設計區,然後在下面空白處再放置一個 JLabel。選中組件按 Space 鍵可以編 輯顯示的文本,右鍵單擊各組件並選擇“更改變量名稱”,將添加的各組件更改為以下列表中的信息。
原變量名、Label 名 Label 變量名 jLabel1 Keyword: keywordLabel jLabel2 [空白] imageLabel jTextField1 [空白] keywordText jButton1 Find findButton
■創建 Action
點擊 findButton 按鈕創建操作。右鍵單擊 findButton,在上下文菜單中選擇“設置操作”,如下圖所示。
圖 6 創建操作菜單
這將顯示如下圖所示對話框。在“操作”下拉菜單中選擇“創建新操作...”。在“操作方法”字段中輸入“doSearch”。在屬性的“文本 ”字段中輸入“Find”, 將 search.jpg 保存到適當的文件夾中,然後通過“導入到項目”按鈕指定它作為小圖標。
圖 7 創建操作對話框
根據以下代碼編寫 FlickrDemoView.java 源代碼創建操作。雙擊 keywordText 設置相同的操作。
@Action
public void doSearch() {
}
■添加代碼
將 Flickr.java 復制到項目的源代碼文件夾。把下載的文件復制到“源包”節點下的“flickrdemo”包下面。使用從 http://www.flickr.com/services/api/misc.api_keys.html 獲取的 API KEY 替換 Flickr.java 代碼中的 MY_KEY。用以下代碼替換操作的 doSearch() 方法中的內容。它實現的主要功能是將獲取的圖標設置到 imageLabel 中。
@Action
public void doSearch() {
String s = keywordText.getText();
Icon icon = Flickr.getInstance().search(s);
imageLabel.setIcon(icon);
}
實際運行程序(這個應用程序必須要連接到互聯網才能運行)。輸入要搜索的單詞,點擊 Find 按鈕或者直接按回車鍵查看搜索結果,如下 圖所示。
圖 8 實際運行畫面
■在後台運行操作
下面將進一步完善程序。在關鍵字搜索期間,按鈕處於點擊狀態,並且應用程序暫時處於無法響應的狀態。因此要將操作更改為在後台運行 。
Swing 應用程序架構可以簡單地運行後台操作。可以通過在操作的設置對話框中選中“後台任務”復選框進行設置。
圖 9 設置後台任務
修改源代碼,將操作的返回值更改為 Task 類型。根據下示代碼更改源代碼。DoSearchTask 類調用 doInBackgroupd() 方法進行搜索,通 過 succeeded() 方法將獲取的圖標設置到 imageLabel 中。更改對象的返回值為 Icon。
@Action
public Task doSearch() {
return new DoSearchTask(getApplication());
}
private class DoSearchTask extends org.jdesktop.application.Task
<Icon, Void> {
private String s;
DoSearchTask(org.jdesktop.application.Application app) {
super(app);
s = keywordText.getText();
}
@Override protected Icon doInBackground() {
return Flickr.getInstance().search(s);
}
@Override protected void succeeded(Icon result) {
imageLabel.setIcon(result);
}
實際運行程序,在搜索的期間狀態欄的進度條一直在動,由此可見搜索功能是在後台運行的。
圖 10 以後台方式運行、進度條
■應用程序中文化
通過 GUI 設計器配置的組件 Label 名稱都是在資源綁定中自動保存的。可以通過編輯資源綁定方便地實現中文化。在 FlickrDemoView.properties 中添加中文的資源綁定。在上下文菜單中選擇“添加語言環境”,然後添加中文。
圖 11 創建中文綁定
同樣,在 FlickrDemoView.properties 的上下文菜單中選擇“打開”。在打開的窗口中輸入英語對應的中文屬性值。
圖 12 用屬性編輯器進行中文化作業
完成中文化後,在日語環境中運行時,UI Label 的變化如下圖所示。在英語環境中運行時,則會用英語顯示。
圖 13 中文化的應用程序
■將應用程序發布到 Java Web Start
要使其他人也能使用此應用程序,可以發布其 jar 包。本文將通過 Java Web Start 將它發布到互聯網&。
NetBeans 6.0 能夠構成多個運行環境,其中包括 Java Web Start。如下圖所示,在項目屬性窗口的“應用程序”分支下選擇“Web Start ”,然後在右側選中“啟用 Web Start”復選框。
圖 14 通過屬性窗口啟用 Java Web Start
完成設置後啟動 Web Start,它會自動讀取 jar 包並運行應用程序。
借助 NetBeans 6.0.1 的 Java 桌面應用程序項目模板,開發人員可以方便地構建應用程序,而且 Swing 應用程序框架和 Beans Binding 等組件也簡化了繁瑣的開發過程。下一部分將介紹如何使用 Mobility 開發游戲。