首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2ME开发 >

高分请问:某个按钮型的StringItem响应后怎么获取对应的一组TextField的用户输入值

2012-01-31 
高分请教:某个按钮型的StringItem响应后如何获取对应的一组TextField的用户输入值?importjavax.microediti

高分请教:某个按钮型的StringItem响应后如何获取对应的一组TextField的用户输入值?
import       javax.microedition.lcdui.*;      
import       javax.microedition.midlet.*;      
    public       class       Item       extends       MIDlet       implements         ItemCommandListener      
    {      
    private       Display       display;      
    private       Command       cmd=new       Command( "Go ",       Command.ITEM,       1);      
    private       StringItem       strItem;      
    private       Form       form;    
    private       TextField   input;  
       
    public       Item()      
    {      
    super();      
    display       =       Display.getDisplay(this);      
    form       =       new       Form( " ");      
    for(int       i=0;i <3;i++)      
    {      
  input=new   TextField( "请输入参数值 "+i,null,200,TextField.ANY);
      }
  strItem=new       StringItem( " ", "执行 ",       javax.microedition.lcdui.Item.BUTTON);      
    strItem.setDefaultCommand(cmd);      
    strItem.setItemCommandListener(this);      
    form.append(strItem);      
     
    display.setCurrent(form);      
    }      
    public       void       commandAction(Command       c,       javax.microedition.lcdui.Item       item)      
    {      
    if(c==cmd)      
    {      
      //如何在这里获取那组TextField用户的输入值:
      for(int   j=0;j <3;j++){
        String   value=input.getString();
        System.out.println(value);
      }      
    }  
....    
    }      
    }  
上面打印出来的结果是3个null,如何动态的获取一组用户的输入值呢?
在线等待各位的帮忙!

[解决办法]
private TextField input; 应该设置为一个空间数组,否则,你在
for(int i=0;i <3;i++)
{
input=new TextField( "请输入参数值 "+i,null,200,TextField.ANY);
}
只是对其进行3次赋值

[解决办法]
不好意思,是控件。
这样试试:
private TextField[] input;
.....
input = new TextField[3];
for(int i=0;i <3;i++)
{
input[i]=new TextField( "请输入参数值 "+i,null,200,TextField.ANY);


}
你说的total是?

[解决办法]
可不可以不用StringItem
可以的话,我给你写一段代码
[解决办法]
/*
* InputsMidlet.java
*
* Created on 2007年4月1日, 下午7:56
*/

package src;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

/**
*
* @author 碳酸钙
* @version
*/
public class InputsMidlet extends MIDlet implements CommandListener{
private int catalogs;
private int items;
private Form f;
private TextField[] input;
private Command nextPage;
private Command okCommand;
private int index;
public InputsMidlet(){
super();
f = new Form( "请填写参数 ");
nextPage = new Command( "下一项 ",Command.ITEM,1);
okCommand = new Command( "确定 ",Command.SCREEN,1);
index = 0;
//模拟从web读取到数字
catalogs = 10;
f.addCommand(okCommand);
f.setCommandListener(this);
//这里模拟第一页
items = 3;
input = new TextField[items];
for(int i=0; i < items; i++){
input[i] = new TextField( "参数 "+i,null,50,TextField.ANY);
f.append(input[i]);
}
Display.getDisplay(this).setCurrent(f);
}
public void startApp() {

}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}

public void commandAction(Command command, Displayable displayable) {
if(displayable != f)
return;
if(command == nextPage && index < catalogs){//切换到下一页
index ++;
//模拟获取这项中需要填写的TextField个数
items = 5;
//清除以前的TextField
f.deleteAll();
input = new TextField[items];
for(int i=0; i < items; i++){
input[i] = new TextField( "参数 "+i,null,50,TextField.ANY);
f.append(input[i]);
}
f.removeCommand(nextPage);
f.addCommand(okCommand);
}else if(command == okCommand){
//输出当前页的输入内容
String parameter = null;
for(int i=0; i < items; i++){
parameter = input[i].getString();
System.out.println(parameter);
}
f.removeCommand(okCommand);
f.addCommand(nextPage);
}

}
}

[解决办法]
用index索引,要返回前面的操作,将index值减小即可.可以再加一个返回按钮
[解决办法]
可以用一个List
比如
String[] strArray ={
"操作一 ",
"操作二 ",
........
}
menu = new List( "选择操作 ",Choice....,strArray, null);
然后怎么做,看看doc吧.呵呵

热点排行