atskyline-BLOG
心里有就有,心里没有就没有。
posts - 11,comments - 2,trackbacks - 0

代码中演示了ChoiceGroup和TextField(列表框和文本框)的使用及其事件响应方式的使用

和Dispalyable类不同的是Item类是无法占据整个屏幕的

通常是使用Form类的append(Item item)添加到Form上的

Item的事件处理方式和Command的事件有几分类似

是通过ItemCommandListenerItemStateListener接口实现的

一个是命令事件一个是状态改变的事件 具体的使用方法参看代码

/**
* project :aboutItem
* @author atskyline
* @FirstWriteTime 2008.07.12
* @LastWriteTime 2008.07.12
*/
import javax.microedition.lcdui.Choice;
import javax.microedition.lcdui.ChoiceGroup;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Item;
import javax.microedition.lcdui.ItemCommandListener;
import javax.microedition.lcdui.ItemStateListener;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class MIDlet1 extends MIDlet implements ItemCommandListener,ItemStateListener
{
   private Display dis;
   private Form frm = new Form("Form");
   private ChoiceGroup cg1 =new ChoiceGroup("ChoiceGroup", Choice.POPUP);
   private TextField text1 =new TextField("TEXT1", "text1", 20, TextField.ANY);
   private TextField text2 =new TextField("TEXT2", "text2", 20, TextField.ANY);
   private Command cmdDel =new Command("删除字符",Command.ITEM,1);
   protected void startApp() throws MIDletStateChangeException
   {
      dis=Display.getDisplay(this);
      dis.setCurrent(frm);
      frm.append(cg1);
      cg1.append("选项A", null);
      cg1.append("选项B", null);
      frm.append(text1);
      frm.append(text2);
      text1.addCommand(cmdDel);
      text2.addCommand(cmdDel);
      text1.setItemCommandListener(this);
      text2.setItemCommandListener(this);
      frm.setItemStateListener(this);//注意是用frm绑定而非cg1
   }
   public void commandAction(Command c, Item item)
   {
      if(c==cmdDel)
      {
         TextField tf=(TextField)item;
         int Position=tf.getCaretPosition();
         tf.delete(Position-1, 1);
      }
   }
   public void itemStateChanged(Item item)
   {
      if(item==cg1)
      {
         String s=cg1.getString(cg1.getSelectedIndex());
         frm.setTitle(s);
      }
   }
   protected void destroyApp(boolean arg0) throws MIDletStateChangeException
   {
   }
   protected void pauseApp()
   {
   }
}
posted on 2008-07-12 21:42 atskyline 阅读(1140) 评论(1)  编辑 收藏 引用 所属分类: J2ME笔记

FeedBack:
# re: J2ME笔记-关于Item类及事件
2010-01-03 13:51 | 匿名
private TextField text1 =new TextField("TEXT1", "text1", 20, TextField.ANY);

如果是单个你不一样不可以占据 全屏,而且
if(c==cmdDel)
{
TextField tf=(TextField)item;
int Position=tf.getCaretPosition();
tf.delete(Position-1, 1);
}

这个都不要判断,如果是position为0 ,不久报异常吗?  回复  更多评论
  
只有注册用户登录后才能发表评论。