📄 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 + -