參考文章: Jigloo 開發(fā) SWT 的入門教程
作者: BeanSoft@126.com
日期: 2007.04.30
轉(zhuǎn)載請注明出處http://www.blogjava.net/beansoft/
下載本文操作視頻: jigloo_swing.swf 1.86 MB
經(jīng)常有朋友苦于自己做了一個轉(zhuǎn)換工具算法, 想用圖形界面封裝一下給同事使用, 卻不知道如何下手. 本文就介紹一下如何用 Jigloo 開發(fā)一個簡單的 Swing 桌面應(yīng)用把自己編寫的 public static String doConvert(String input) 方法封裝成圖形界面的版本. 本文適用于從未有過 GUI/SWT 開發(fā)經(jīng)驗但是熟悉 Eclipse IDE 的基本使用以及插件安裝的讀者, 讀者同時應(yīng)該對 Java 語言有了解和使用的經(jīng)驗. 本文不講述 SWT/Swing 以及 GUI 設(shè)計的相關(guān)知識.
這里用 Swing 來進行這個界面的設(shè)計, 步驟相對于基于 SWT 來得簡單, 因為不需要安裝 Swing(JDK/JRE 自帶了). 筆者的 Tomcat Server Monitor 即是用 Jigloo 完成了大部分的界面開發(fā)工作.
題外話: 目前 Swing 界面開發(fā)做的最好的界面設(shè)計器是 Netbeans 的界面設(shè)計器, 基本上不用再考慮布局的問題.
期望對如何使用 Jigloo 有深入了解的讀者可以在安裝 Jigloo 插件后閱讀 Eclipse 幫助文檔中的 Jigloo GUI Builder Guide 一節(jié)了解更多的技巧, 例如: 如何在大文件模式下使用 Jigloo, 如何避免解析某些代碼, Jigloo 如何解析界面代碼以及如何打開由其它界面設(shè)計器制作的界面文件等. 這些幫助文檔可以通過菜單 Help -> Help Contents 來打開.
一. 搭建開發(fā)環(huán)境
1. JDK/JRE 的下載和安裝
JDK 可以從 http://java.sun.com/j2se/ 進行下載和安裝, 這里就不再贅述了. 安裝完的 JDK 就可以用來開發(fā)和運行 Swing .
2. Jigloo 的下載和安裝
Jigloo
能識別大多數(shù)的 FormBuilder 創(chuàng)建的 GUI, 例如 JBuilder 等, 運行速度比較快, 比 Visual Editor 好用. 可以編輯 AWT,Swing/SWT 的界面. 個人用免費, 商用需收費.
Note: Jigloo is free for non-commercial use, but purchase of a Professional License is required for commercial use (after successfully evaluating Jigloo).
注: 3.95 版本上筆者測試運行過的 Eclipse 版本有 2.1, 3.2, 3.3. 為了便于講述, 本文所使用的 Eclipse 版本是 3.3.0, Jigloo 3.95, JDK 1.5.
Eclipse:
2.1.*, 3.0*, 3.1*, 3.2, 3.3
Java:
1.3, 1.4 or 5.0
Platforms:
Windows, Linux (gtk) and Mac OSX. (On a Mac, only SWT GUIs can be built).
下載地址: jigloo_395.zip
二. Jigloo 簡單使用
1. 初識 Jigloo
首先我們要如上所示新建一個名為 jiglooSwing 的 Java 工程:
選擇菜單 File -> New -> Project..., 然后選擇在第一個分類中選擇 Java Project, 點擊 Next, 然后輸入 jiglooSwing, 點擊"Finish"按鈕. 然后請復(fù)制下列代碼到剪貼板然后在 MyProject 的 src 目錄上點擊右鍵, 選擇"Paste", 這樣這個轉(zhuǎn)換類就出現(xiàn)在了工程中:
public class Converter {
public static String doConvert(String input) {
return input + " is converted.";
}
}
然后我們選擇菜單 File -> New -> Other..., 在所出現(xiàn)的 New 對話框中打開分類 GUI Forms -> Swing, 選中 JFrame, 如下圖所示:
在接下來的向?qū)υ捒蛑斜3帜J的輸入值不變, 然后刪除 src 這個包名即可:
接著將會自動用 Jigloo 界面設(shè)計器打開新生成的文件, 顯示如下:
2. 拖拉快速搭建界面
拖放, 預(yù)覽.
首先我們在(7)中選擇 this - JFrame, Border , 然后在(11)中選擇 Layout 面板, 點擊樹節(jié)點 Layout(*), 在右側(cè)下拉列表框中選擇其值為 Absolute( 絕對布局).
我們選擇這個布局主要是為了快速開發(fā)的關(guān)系, 雖然這不是一個很好的選擇. 詳細信息可以自行瀏覽 Swing 開發(fā)相關(guān)的資料.
好了, 接下來在(9)中選擇面板 Components, 然后點擊兩次 JTextField 控件, 放到設(shè)計面板上, 拖拉使其不要重疊并放置在合適的位置上, 這兩個組件按照默認值即可, 分別為 jTextField1, jTextField2.
最后我們把一個 JButton 添加上去, 在添加對話框中修改 Text 值為 OK.
拖放各個組件來布局到合適的大小和位置, 如下圖所示:
3. 加入事件響應(yīng)代碼
首先點擊一下界面上的 "OK" 按鈕, 然后選擇(11)中的 Event 面板, 然后展開ActionListener , 單擊 actionPerformed 節(jié)點右側(cè)的not handled 下拉框, 然后選擇 handler method, 這樣將會生成一個點擊 OK 后觸發(fā)的事件調(diào)用方法, 如下圖所示:
接著編輯器中的鼠標(biāo)將會定位到剛才生成的事件方法中, 默認生成的代碼如下所示:
private void jButton1ActionPerformed(ActionEvent evt) {
System.out.println("jButton1.actionPerformed, event=" + evt);
//TODO add your code for jButton1.actionPerformed
}
我們在 TODO 后面加入下列代碼即可完成我們所需要的功能了:
jTextField2.setText(Converter.doConvert(jTextField1.getText()));
這段代碼將會設(shè)置文本框2中的文本內(nèi)容為先前編寫的轉(zhuǎn)換代碼所處理過的內(nèi)容, 輸入的內(nèi)容是 jTextField1 中顯示的文本. 相當(dāng)于調(diào)用如下一段代碼:
String input = jTextField1.getText();
String output = Converter.doConvert(input);
jTextField2.setText(output);
setText(String) 和 getText() 方法分別對組件顯示的文本內(nèi)容進行讀寫操作.
4. 測試
點擊 (3) 按鈕,運行, 修改 jTextField1 中的值, 然后點擊 OK 按鈕, 可以看到運行結(jié)果正常. 如下圖所示:
三. 打包發(fā)布應(yīng)用
1. 目錄布局以及復(fù)制依賴文件
我們這個項目不依賴任何第三方包, 最后的文件目錄結(jié)構(gòu)如下示:
jiglooSwing
├─classes
└─src
2. 編寫啟動腳本
在根目錄下編寫 運行.bat, 內(nèi)容如下所示:
java -cp classes NewJFrame
雙擊運行此批處理文件可以看到主窗口.
四. FAQ
歡迎提問, 并來 Wiki 留言交流.
一些常見小問題.
Q: 我編輯下面的代碼后發(fā)現(xiàn) GUI Properties 面板和組件層次大綱消失了?
A: 點擊一下界面設(shè)計器中的按鈕后 GUI Properties 面板將會再次出現(xiàn).
Q: 我想給窗口設(shè)置一個標(biāo)題, 并且給兩個文本框設(shè)置默認的值為空, 怎么辦?
A: 修改 Properties 屬性中的 text 即可, 文本框的可以先在界面設(shè)計器中選中組件, 然后在GUI屬性頁修改即可. 主窗口的稍微復(fù)雜一點, 如下圖所示需要先選中 JFrame, 然后再修改:
Q: 我想使用多行文本編輯器(TextArea), 而文中的例子是單行文本框, 怎么辦?
A: 將這段操作改為 " 接下來在(9)中選擇面板 Components, 然后點擊兩次 JTextArea 控件, 放到設(shè)計面板上, 拖拉使其不要重疊并放置在合適的位置上, 這兩個組件按照默認值即可, 分別為 jTextArea1, jTextArea2. 如果發(fā)現(xiàn)放 jTextArea2 的時候無法添加上去, 請把它放到 Outline 中的 (7) 的 this - JFrame, Absolute 即可".
同時事件處理代碼根據(jù)變量名的改動修改為如下代碼:
jTextArea2.setText(Converter.doConvert(jTextArea1.getText()));
Q: 發(fā)現(xiàn)關(guān)閉 Eclipse 再打開剛才設(shè)計的代碼的時候沒有出現(xiàn) Jigloo 界面設(shè)計器, 我如何才能打開它進行編輯?
A: 有時候 Eclipse 不能記住上次打開某文件的時候所用的編輯器, 因此首先確保這個類沒有被 Eclipse 的其它編輯器打開, 然后右鍵點擊文件選擇 "Open with->Form Editor". 如下圖所示:
五: 下載本文所使用的 jiglooSwing 源碼
下載后解開文件, 將項目導(dǎo)入 Eclipse 即可編譯.
jiglooSwing.zip 5 KB