SWT Designer 是一種功能強大且容易使用的基於Eclipse SWT技術的圖形用戶界面設計工 具,是一個很好的Eclipse的界面開發插件包。利用SWT Designer 的可視化界面,只需采用 拖拉操作,就可以很快地在窗體上創建各種組件,設計出來的窗體和組件的外觀和操作系統 平台下其他軟件的外觀相似,具有本機系統的風格。SWT Designer 可以自動生成Java代碼, 利用它的屬性編輯器還可以改變組件的各種屬性,使SWT界面開發變得非常容易。
1.SWT Designer 的下載和安裝
SWT Designer 有多個版本,要和相應的Eclipse版本相匹配。我使用的是 Designer_v6.7.0_for_Eclipse3.2.zip。安裝步驟如下:
1.1 下載
下載版本:Designer_v6.7.0,文件:Designer_v6.7.0_for_Eclipse3.2.zip,下載地址: 大家自己搜下,呵呵。
1.2 安裝
Designer_v6.7.0_for_Eclipse3.2.zip解壓縮到Eclipse的安裝目錄中。安裝結束後,啟 動Eclipse,在主菜單中選擇【文件】→【新建】→【項目】,如果在彈出的“新建項目”對 話框中多了一個“Designer”項,則表示SWT Designer 安裝成功。如圖1所示。
圖1
1.3 注冊
在Eclipse 主菜單中選擇【窗口】→【首選項】,彈出一個對話框,如圖2,單擊左邊樹 形目錄中的Designer,然後單擊對話框右下方的【Registration and Activation】按鈕,彈 出對話框,如圖4.43 所示,在Serial number欄中輸入產品序列號,在ActivationKey 欄中 輸入產品激活號,單擊【完成】,即可激活。
圖2
SWT Designer 有免費版、評估版和正式版,免費版只有有限的功能,評估版需要填寫用 戶資料和E-mail 地址,從E-mail 中可以獲得Activation Key,評估時限為2 周。正式版則 要購買產品,才能獲得Activation Key。
2. SWT Designer 開發實例
本節通過創建一個項目,熟悉一下SWT Designer 的主界面及其相應的組件。操作步驟如 下:
2.1創建SWT/JFaceProject
在Eclipse 主菜單中選擇【文件】→【新建】→【其他】,彈出“新建”對話框,展開 Designer 節點,選擇“SWT/JFace Java Project” (記住:是SWT/JFace Project,不是 JavaProject),再單擊【下一步】,出現“創建Java 項目”對話框,輸入項目名,如 SWTDesigerTest,單擊【完成】。
2.2創建Application Window 窗體
右單擊項目名(SWTDesigerTest),選擇【新建】→【其他】,在“新建”對話框中,展 開Designer 節點下的SWT 節點,選擇“Application Window”,再單擊【下一步】,在彈出 的對話框中輸入包名和類名,在下方的單選項中選擇“public static main() mathod”, 該 選項會自動生成main()方法,使窗體能獨立運行。單擊【完成】。在程序編輯區的下方,有 【Source】和【Design】兩個標簽,選擇【Source】標簽,則在程序編輯區中顯示源程序; 選擇【Design】標簽,則在程序編輯區中出現一個窗體。
2.3在窗體中加入組件
加入2 個標簽組件(Label)、2 個文本框組件(Text)和2 個按鈕組件(Button),如圖4 所示。
圖4 SWT Designer 界面
if(text.getText()!=""|text_1.getText ()!="")
//調用JFace的信息對話框顯示登錄信息
MessageDialog.openInformation(shell,"登錄信息","歡迎 "+text.getText()+"進入系統!");
else
//調用 JFace的錯誤對話框顯示出錯信息
MessageDialog.openError(shell,"錯誤 ","用戶名或密碼為空,請重新輸入!");
由於用到了 JFace的對話框,在程序的前面要引入相應的包:
import org.eclipse.jface.dialogs.*;
輸入密碼時要在密碼框顯示“*”,需 要添加SWT.PASSWORD選項:
final Text text_1=new Text (shell,SWT.BORDER|SWT.PASSWORD);
2.5運行程序
在Eclipse包資源 管理器中,右單擊文件名,在彈出的菜單中選擇【運行方式】→【SWT應用程序】,運行 結果如圖6所示。輸入用戶名和密碼,點擊【提交】,則出現用戶登錄對話框,如圖7所示。 如果用戶名或密碼為空,則出現錯誤提示對話框,如圖8所示。
圖6 用戶 登錄窗體
圖7 用戶 登錄對話框
圖8 錯誤信息對話框
2.6 程序源程序
源程序
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.jface.dialogs.*;
public class login {
private Text text_1;
private Text text;
protected Shell shell;
/** *//**
* Launch the application
* @param args
*/
public static void main(String[] args) {
try {
login window = new login();
window.open();
} catch (Exception e) {
e.printStackTrace();
}
}
/** *//**
* Open the window
*/
public void open() {
final Display display = Display.getDefault();
createContents();
shell.open();
shell.layout();
while (! shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
}
/** *//**
* Create contents of the window
*/
protected void createContents() {
shell = new Shell();
shell.setSize(411, 359);
shell.setText("SWT Application");
text = new Text(shell, SWT.BORDER);
text.setBounds(197, 109, 142, 25);
text_1 = new Text (shell, SWT.BORDER|SWT.PASSWORD);
text_1.setBounds(197, 173, 142, 25);
final Button button = new Button(shell, SWT.ABORT);
button.setText("提交");
button.setBounds(85, 263, 48, 22);
final Button button_1 = new Button(shell, SWT.ABORT);
button_1.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(final SelectionEvent e)
{
}
});
button_1.setText(" 取消");
button_1.setBounds(247, 263, 48, 22);
final Label label = new Label(shell, SWT.NONE);
label.setText ("用戶名");
label.setBounds(106, 112, 48, 22);
final Label label_1 = new Label(shell, SWT.NONE);
label_1.setText("密 碼");
label_1.setBounds(106, 176, 48, 25);
button.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(final SelectionEvent e)
{
if(text.getText()!=""|text_1.getText()! ="")
// 調用JFace的對話框顯示登錄信息
MessageDialog.openInformation(shell,"登錄信息","歡 迎"+text.getText()+"進入系統!");
else
// 調用JFace的對話框顯示出錯信息
MessageDialog.openError(shell,"錯誤","用戶名或密碼為空,請重新輸入 !");
}
});
}
}