?? namepage.java
字號:
package cn.com.chengang.jface.dialog.wizard;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.validator.EmailValidator;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
public class NamePage extends WizardPage {
private String name;
private String email;
private Text nameText;
private Text emailText;
// 必須繼承父類的構造函數
protected NamePage(String pageName) {
super(pageName);
}
// 改寫自父類的方法,在此方法中構建頁面上的界面組件。注意不要在傳入參數parent基礎直接創建界面元素,而應在一個新面板topComp上創建
public void createControl(Composite parent) {
// 每頁的提示信息
setTitle("用戶信息");
setMessage("請輸入您的姓名及Email", INFORMATION);
// 創建一個頁面組件的底層面板,并使用GridLayout布局
Composite topComp = new Composite(parent, SWT.NULL);
topComp.setLayout(new GridLayout());
// 創建“姓名”文本框
nameText = new Text(topComp, SWT.BORDER);
nameText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
// 將null轉化成"",等效于 name== null ? "" : name
nameText.setText(StringUtils.defaultString(name));
// 創建“Email”文本框
emailText = new Text(topComp, SWT.BORDER);
emailText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
emailText.setText(StringUtils.defaultString(email));
// 給兩文本框加入監聽器
MyModifyListener listener = new MyModifyListener();
nameText.addModifyListener(listener);
emailText.addModifyListener(listener);
// 必須要的一行
setControl(topComp);
}
// 此監聽器,每次文本框里的文本變動都會觸發,觸發頻度較大
private class MyModifyListener implements ModifyListener {
public void modifyText(ModifyEvent e) {
setPageComplete(false); // 先使“完成”和“下一步”兩按鈕無效
// 用Apache Commons Lang的StringUtils可以檢查出全角空格
name = nameText.getText().trim();// 設回實例變量name
if (StringUtils.isBlank(name)) {
setErrorMessage("姓名不能為空"); // 提示錯誤信息
return;
}
// 用了Apache Commons Validator的 EmailValidator來檢查Email寫法的合法性
EmailValidator validator = EmailValidator.getInstance();
email = emailText.getText().trim();// 設回實例變量email
if (!validator.isValid(email)) {
setErrorMessage("Email的格式錯誤");
return;
}
// 前面的檢查都通過后......
setErrorMessage(null); // 消除對話框上的出錯提示
setPageComplete(true); // 使“完成”和“下一步”兩按鈕可用
}
}
// --------相應的Setter/Getter方法 ---------------
public String getName() {
return name;
}
public void setName(String string) {
name = string;
}
public String getEmail() {
return email;
}
public void setEmail(String string) {
email = string;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -