📄 registerform.java
字号:
package myim.ui;
import myim.logic.*;
import javax.microedition.lcdui.*;
import myim.midlet.MyIMMIDlet;
/**
* 注册界面
*/
public class RegisterForm extends Form implements CommandListener, HttpListener {
/**Display对象*/
private Display display;
/**用户名文本框*/
private TextField tfUsername;
/**密码文本框*/
private TextField tfPassword;
/**确认密码文本框*/
private TextField tfConfirmPassword;
/**性别选择框*/
private ChoiceGroup cgSex;
/**手机号码文本框*/
private TextField tfCellPhone;
/**email地址*/
private TextField tfEmail;
/**注册按钮*/
private Command cmdRegister;
/**返回按钮*/
private Command cmdBack;
/**退出按钮*/
private Command cmdExit;
/**信息提示框*/
private Alert alert;
/**
* 使用display对象进行构造
* @param display Display对象
*/
public RegisterForm(Display display) {
super("注册界面");
this.display = display;
//初始化界面
initUI();
}
/**
* 初始化界面
*/
private void initUI() {
tfUsername = new TextField("用户名*:", "", 16, TextField.ANY);
tfPassword = new TextField("密码*:", "", 16, TextField.PASSWORD);
tfConfirmPassword = new TextField("确认密码*:", "", 16, TextField.PASSWORD);
cgSex = new ChoiceGroup("性别*:", ChoiceGroup.EXCLUSIVE);
cgSex.append("男", null);
cgSex.append("女", null);
tfCellPhone = new TextField("手机号码:", "", 11, TextField.NUMERIC);
tfEmail = new TextField("Email:", "", 50, TextField.ANY);
//添加到界面
append(tfUsername);
append(tfPassword);
append(tfConfirmPassword);
append(cgSex);
append(tfCellPhone);
append(tfEmail);
setCommandListener(this);
cmdRegister = new Command("注册", Command.OK, 1);
cmdBack = new Command("返回", Command.SCREEN, 1);
cmdExit = new Command("退出", Command.EXIT, 1);
//添加到界面
addCommand(cmdRegister);
addCommand(cmdBack);
addCommand(cmdExit);
//初始化信息提示框
alert = new Alert("MyIM", "", null, AlertType.INFO);
}
/**
* 事件处理方法
* @param command Command 被按下的按钮
* @param displayable Displayable 发生事件的界面对象
*/
public void commandAction(Command command, Displayable d) {
//注册按钮
if (command == cmdRegister) {
//获得用户输入
String userName = tfUsername.getString();
String pwd1 = tfPassword.getString();
String pwd2 = tfConfirmPassword.getString();
int sex = cgSex.getSelectedIndex();
String phoneNumber = tfCellPhone.getString();
String email = tfEmail.getString();
//检查输入是否完整
if (userName.length() == 0) {
alert.setString("用户名不能为空!");
display.setCurrent(alert);
return;
} else if (pwd1.length() == 0) {
alert.setString("密码不能为空!");
display.setCurrent(alert);
return;
} else if (pwd1.length() == 0) {
alert.setString("确认密码不能为空!");
display.setCurrent(alert);
return;
}
//比较密码和确认密码是否相同
if (!(pwd1.equals(pwd2))) {
alert.setString("密码和确认密码必须相同!");
display.setCurrent(alert);
return;
}
//发送数据
sendRegisterData(userName, pwd1, sex, phoneNumber, email);
}
//返回按钮
if (command == cmdBack) {
//显示登录界面
display.setCurrent(new LoginForm(display));
}
//退出按钮
if (command == cmdExit) {
//程序退出
MyIMMIDlet.quitApp();
}
}
/**
* 生成注册数据,并发送
* @param userName 用户名
* @param pwd 密码
* @param sex 性别,0代表男,1代表女
* @param phoneNumber 电话号码
* @param email email地址
*/
private void sendRegisterData(String userName, String pwd, int sex,
String phoneNumber, String email) {
try {
//转换为字节数组
byte[] n = userName.getBytes("utf-8");
byte[] p1 = pwd.getBytes("utf-8");
byte[] ph = phoneNumber.getBytes("utf-8");
byte[] em = email.getBytes("utf-8");
//协议数据长度
int len = 1 + 1 + n.length + 1 + p1.length + 1 + 1 + ph.length + 1 +
em.length;
//生成协议数据
byte[] data = new byte[len];
data[0] = RequestInterface.Register_User;
data[1] = (byte) n.length;
System.arraycopy(n, 0, data, 2, n.length);
data[n.length + 2] = (byte) p1.length;
System.arraycopy(p1, 0, data, n.length + 3, p1.length);
data[n.length + 4 + p1.length] = (byte) sex;
data[n.length + 5 + p1.length] = (byte) em.length;
System.arraycopy(em, 0, data, len - 1 - em.length, em.length);
//发送协议数据
new HttpThread(this, data);
} catch (Exception e) {
System.out.println("sendRegisterData:" + e);
}
}
/**
* 处理服务器反馈数据
* @param data byte[] 服务器反馈信息
*/
public void getResponse(byte[] data) {
try {
//解析反馈
switch (data[0]) { //指令
case ResponseInterface.REGISTER_SUCCESS: //注册成功
//显示注册成功提示
alert.setString("祝贺你,注册成功!");
//显示提示
display.setCurrent(alert);
//显示登录界面,并初始化登录提示框
String userName = tfUsername.getString();
String pwd1 = tfPassword.getString();
display.setCurrent(new LoginForm(display, userName, pwd1));
break;
case ResponseInterface.REGISTER_SERVER_INFO: //服务器返回提示信息
String msg = new String(data, 1, data.length - 1, "utf-8");
alert.setString(msg);
//显示提示
display.setCurrent(alert, this);
break;
case ResponseInterface.REGISTER_VERSION_LOWER: //版本过低
alert.setString("版本过低");
//显示提示
display.setCurrent(alert, this);
break;
case ResponseInterface.REGISTER_User_EXISITS: //用户已存在
alert.setString("该用户已经被注册,请选择其他用户名");
//显示提示
display.setCurrent(alert, this);
break;
default: //其它
doError("无法解析的数据!");
break;
}
} catch (Exception e) {
doError(e.toString());
}
}
/**
* 处理错误信息
* @param errMsg String 错误信息
*/
public void doError(String errMsg) {
alert.setString(errMsg);
//显示提示
display.setCurrent(alert, this);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -