站在用户的角度来思考问题,用户需要的永远是方便、快捷的操作功能,所以有些时候自动记录上次登陆成功的用户名和密码也就不可避免了。
以下代码实现了这个功能,把上次登陆成功的用户名和密码记录在RMS里,因为RMS是保存在ROM里的,具有断电非易失性。
private class TextForm extends Form implements CommandListener {
Command loginCom = new Command("登陆",Command.OK,0);
Command backCom = new Command("返回",Command.BACK,1);
int temp;
String Myname,Mypassword,s;
public TextForm(){
super("登陆界面");
try{
temp = rs.getNumRecords();
}catch(Exception e){e.printStackTrace();}
if(temp!=0){
try{
s = decode(rs.getRecord(temp));
}catch(Exception e){e.printStackTrace();}
Myname = s.substring(0,s.indexOf("&"));
s = s.substring(s.indexOf("&")+1);
Mypassword = s;
userName = new TextField(" 用户名 :",Myname,10,TextField.ANY);
passWord = new TextField(" 密码 :",Mypassword,10,TextField.ANY);
}else{
userName = new TextField(" 用户名 :","",10,TextField.ANY);
passWord = new TextField(" 密码 :","",10,TextField.ANY);
}
append(userName);
append(passWord);
addCommand(loginCom);
addCommand(backCom);
setCommandListener(this);
}
public void commandAction(Command c, Displayable g) {
if(c == loginCom){
if(userName.getString().length()!=0&&passWord.getString().length()!=0){
setCommand("LogonAction",userName.getString()+"&"+passWord.getString());
getCommand();
try{
client.send(com);
}catch(Exception ex){
ex.printStackTrace();
}
gameMode = 4;
initFlag = true;
display.setCurrent(r);
setCommand("QryRoomsAction",null);
getCommand();
try{
client.send(com);
}catch(Exception ex){
ex.printStackTrace();
}
tempName = userName.getString();
tempPassword = passWord.getString();
}else{
Alert alert = new Alert("警告","用户名和密码不能为空",null,AlertType.ERROR);
alert.setTimeout(Alert.FOREVER);
display.setCurrent(alert);
}
}else if(c == backCom){
gameMode = 1;
display.setCurrent(r);
}
}
}