📄 wmlform.java
字号:
package org.gui.com;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import javax.microedition.lcdui.*;
import org.httpClient.com.RMStore;
import org.httpClient.com.HttpHandler;
import org.kxml2.io.KXmlParser;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
public class WMLForm extends Form implements CommandListener,ItemCommandListener {
private int formID;
private String message="";
private Command[] itemEvent,itemLink;
private int bi = 0,sib = 0,Lik = 0,imagei=0;//sib用于URL、method、message同步
private StringItem[] StrItemEvent;
private StringItem[] StrItemLink;
private String[] href,linkURL;
private String[] linkMessage;
private int lmsg=0;
private String[] ButtonURL,method;
private TextField[] inputField;
private int ini = 0, j = 0;
private boolean srcInput=true;
private String[][] msgName; //发送的参数值的名字
private String[] msg; //发送的参数的值
private Display display = null;
private ImageItem[] imageItem;
private RMStore cookie;
private boolean Layout_left=true;
private HttpHandler myHttpHandler;
private HttpClient parentForm = null;
private Command exit = new Command("exit",Command.BACK,1);
public WMLForm(String ID,String title,Display display,RMStore cookie,HttpClient parentForm){
super(title);
this.cookie= cookie;
this.display = display;
this.parentForm = parentForm;
inputField = new TextField[6];
msgName = new String[30][];
msg = new String[30];
itemEvent = new Command[30];
itemLink = new Command[30];
linkMessage = new String[30];
imageItem = new ImageItem[60];
StrItemLink = new StringItem[50];
StrItemEvent = new StringItem[50];
href = new String[50];
ButtonURL = new String[50];
method = new String[50];
if(ID.equals("login")){ //强制在一个页面登录和退出
this.addCommand(exit);
this.setCommandListener(this);
}
}
public void commandAction(Command arg1,Displayable d){
if(arg1 == exit){
display.setCurrent(parentForm);
}
}
public void commandAction( Command acd, Item item ){
int i =0;
while(itemLink[i]!=null){
if(acd == itemLink[i] && href[i]!=null){ //是link事件
myHttpHandler = new HttpHandler(display,href[i],linkMessage[i],
"get",cookie,parentForm);
myHttpHandler.start();
break;
}
i++;
}
i=0;
while(itemEvent[i]!=null){ //按钮事件
if(acd == itemEvent[i] && ButtonURL[i]!=null){
message = getMessage(i);
myHttpHandler = new HttpHandler(display,ButtonURL[i],message,
method[i],cookie,parentForm);
myHttpHandler.start();
message = "";
break;
}
i++;
}
}
public void setSrcInput(boolean srcinput){
srcInput= srcinput;
}
public void setMsg(String str){
msg[sib] = str;
sib++;
}
public void setLinkMessage(String str){
linkMessage[lmsg] = str;
lmsg++;
}
public void newItemLink(String linkStr){//只是显示链接 要转向的页面ID在href数组里
StrItemLink[Lik] = new StringItem(null,linkStr.trim(),Item.HYPERLINK);
StrItemLink[Lik] .addCommand(itemLink[Lik] = new Command(linkStr.trim(),Command.OK,1));
StrItemLink[Lik] .setItemCommandListener(this);
if(Layout_left)
StrItemLink[Lik].setLayout(Item.LAYOUT_LEFT);
else
StrItemLink[Lik].setLayout(Item.LAYOUT_CENTER);
this.append(StrItemLink[Lik]);
Lik++;
}
public void newItemEvent(String buttonName,boolean isanchor){
if(isanchor){
StrItemEvent[sib] = new StringItem(null,buttonName,Item.HYPERLINK);
}else{
StrItemEvent[sib] = new StringItem(null,buttonName,Item.BUTTON);
}
StrItemEvent[sib] .addCommand(itemEvent[sib] = new Command(buttonName,Command.OK,1));
StrItemEvent[sib] .setItemCommandListener(this);
this.append(StrItemEvent[sib]);
}
public void newItemText(String TextStr){
StringItem text = new StringItem(TextStr.trim(),null);
if(Layout_left)
text.setLayout(Item.LAYOUT_LEFT);
else
text.setLayout(Item.LAYOUT_CENTER);
this.append(text);
}
public void setURLNMethod(String URLStr,String MethodStr){ //用于Sumbit发生与服务连接的事件
ButtonURL[sib] = URLStr;
method[sib] = MethodStr;
}
public void sethref(boolean lmsg,String hrefStr){ //用于不同页间的转换
if(!lmsg){
href[Lik]="http://localhost:8080/myWml/"+hrefStr+".wml";
}else{
href[Lik] = hrefStr;
}
}
public void setMsgName(String msg){
msgName[sib][j]= msg;
j++;
}
public void newInput(boolean password,String inputName){
if(password){
inputField[ini] = new TextField(inputName,null,100,TextField.PASSWORD);
}else{
inputField[ini] = new TextField(inputName,null,100,TextField.ANY);
}
this.append(inputField[ini]);
ini++;
}
public void newImage(ImageItem image){
imageItem[imagei] = image;
this.append(imageItem[imagei]);
imagei++;
}
public void setLayout(String layout){
if(layout.equals("center")){
Layout_left = false;
}else{
Layout_left = true;
}
}
public String getMessage(int index){
int msgVStart = 0,msgVOver = 0; //用来标志$(name)
int k = 0; //循环变量
int msgBstart = 0,msgBover = 0;//用来标志除$(name)之外的
String tempmsgV = null,tempmsgN = null;
boolean var = false; //判断是否是上下文的变量的标志
// name=$(name)&password=$(password)
for(int i=0; i < msg[index].length();i++){ //主要是为了处理有上文的变量
if(msg[index].charAt(i)=='$'){
msgBover = i;
tempmsgN = msg[index].substring(msgBstart,msgBover);
message = message + tempmsgN;
msgVStart = i + 2;
var = true;
}else if(msgVStart != 0 && msg[index].charAt(i)==')'){
msgVOver = i;
tempmsgV= msg[index].substring(msgVStart,msgVOver);
k =0;
while(inputField[k]!=null){
if(tempmsgV.equals(inputField[k].getLabel())){
message = message + inputField[k].getString();
var = false;
break;
}
k++;
}
i++;
msgBstart = i;
}
}
if(message.equals("")) //说明没有上文变量全是直接赋值
return msg[index];
return message;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -