网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > 认证考试 > Java认证 > J2ME学习札记2  

J2ME学习札记2

2003-02-19  作者:BitsCN整理  来源:中国网管联盟  点评 投稿 收藏


  Command对象
  发信站: 北大未名站 (2001年10月20日20:33:56 星期六) , 站内信件
   在前面我们其实已经使用过Command对象了。J2ME的事件系统比较特殊,你必须首先定义一系列的命令,然后注册到容器对象中,例如(Form、Alert、List、TextBox),再设定命令监听者
  ,编写好commandAction()方法即可。当系统发送某个命令,便由commandAction()方法进行统筹处理。下面的程序演示了如何定义多个命令以及如何编写commandAction()方法。
  package fancy.test;
  
  import javax.microedition.midlet.*;
  import javax.microedition.lcdui.*;
  
  public class CMD extends MIDlet implements CommandListener
  {
  private Display display;
   private Form props;
  
   private Command backCommand = new Command("BACK", Command.BACK, 2);
   private Command cancelCommand = new Command("CANCEL", Command.CANCEL, 1);
   private Command exitCommand = new Command("EXIT", Command.EXIT, 1);
   private Command helpCommand = new Command("HELP", Command.HELP, 1);
   private Command itemCommand = new Command("ITEM", Command.ITEM, 1);

网管论坛bbs_bitsCN_com


   private Command okCommand = new Command("OK", Command.OK, 1);
   private Command screenCommand = new Command("SCREEN", Command.SCREEN, 1);
   private Command stopCommand = new Command("STOP", Command.STOP, 1);
  
  
  public CMD()
  {
  display = Display.getDisplay(this);
   }
  
  public void startApp()
  {
  props = new Form("Hello World");
  props.append("Hello World!\n");
  
  props.addCommand(backCommand);
  props.addCommand(cancelCommand);
  props.addCommand(exitCommand);
  props.addCommand(helpCommand);
  props.addCommand(itemCommand);
  props.addCommand(okCommand);
  props.addCommand(screenCommand);
  props.addCommand(stopCommand);
  props.setCommandListener(this);
  display.setCurrent(props);
   }
  
  public void showScreen(String cmd)
  {
  Form form=new Form("show cmd");
  form.append(cmd);
  form.addCommand(exitCommand);

中国网管联盟bitsCN.com


  form.setCommandListener(this);
  display.setCurrent(form);
  
  }
  
  public void commandAction(Command c, Displayable s)
  {
  if (c == exitCommand)
  {
  destroyApp(false);
   notifyDestroyed();
  }
  else if(c==helpCommand)
  {
  showScreen("help");
  }
  else if(c==backCommand)
  {
  showScreen("back");
  }
  else if(c==cancelCommand)
  {
  showScreen("cancel");
  }
  else if(c==itemCommand)
  {
  showScreen("item");
  }
  else if(c==okCommand)
  {
  showScreen("ok");
  }
  else if(c==screenCommand)
  {
  showScreen("screen");
  }
  if(c==stopCommand)
  {
  showScreen("stop");
  }
  
  
   }
  
  public void destroyApp(boolean unconditional)
  {
   }
  
  public void pauseApp()
  {
  display.setCurrent(null);
  props = null;
   } 中国网管联盟bitsCN.com
  
  }
   在上面的程序(CMD.java)中定义了八个命令。如果commandAction()方法接到这八个命令,多半是调用showScreen()方法,将这几个命令输出。showScreen()方法会产生一个新的容器对象(Form),作为当前的屏幕,并把截获的命令显示在屏幕中。
   CMD.java的运行效果如下2图所示(当屏幕出现Hello World字样的时候,你需要按下退出键,命令菜单就会出现了,你可以依次执行各个命令)。
  
  
  TextBox文本框对象
  发信站: 北大未名站 (2001年10月20日20:36:34 星期六) , 站内信件
  
   TextBox是一个容器类型的对象(和Form的性质一样)。用法如下所示:
  
  package fancy.test;
  
  import javax.microedition.midlet.*;
  import javax.microedition.lcdui.*;
  
  public class ShowTextBox extends MIDlet implements CommandListener
  {
  private Display display;
   private TextBox txtBox;
  
  private Command exitCommand = new Command("Exit", Command.EXIT, 1);
  
  public ShowTextBox()
  {
  display = Display.getDisplay(this);
   } 网管网www.bitscn.com
  
  public void startApp()
  {
  //or :
  //String str="hello world";
  //txtBox = new TextBox("Text Box",str,str.length(),0);
  //the follow code is wrong:
  //txtBox = new TextBox("Text Box",str,any number here,0);
  
  txtBox = new TextBox("Text Box",null,200,0);
  
  txtBox.addCommand(exitCommand);
  txtBox.setCommandListener(this);
  display.setCurrent(txtBox);
   }
  
  public void commandAction(Command c, Displayable s)
  {
  if (c == exitCommand)
  {
  destroyApp(false);
   notifyDestroyed();
  }
   }
  
  public void destroyApp(boolean unconditional)
  {
   }
  
  public void pauseApp()
  {
  display.setCurrent(null);
  txtBox = null;
   }
  
  }
   请注意TextBox类的构造函数,第一个参数实际上是窗口的名称(因为TextBox是一个容器,可能是当前屏幕的显示对象),第二个参数是缺省值,第三个参数是输入字符的总长度。如果你设置了文本框的缺省值,那么第三个参数必须是缺省字符的长度。如果第三个参数的值和缺省字符的长度不一样,那么程序运行不成功(编译可以通过)。如果你将第二个参数置为null值,那么第三个参数可以任意设。
中国网管联盟bitsCN.com

   ShowTextBox.java的运行效果如下图所示:
  
  TextField文本域对象
  发信站: 北大未名站 (2001年10月20日20:37:59 星期六) , 站内信件
  
   TextField和TextBox有点相似,不过TextBox是多行的,而TextField是单行的。而且TextBox是容器类型的对象,但是TextField是项目类型的对象,只能够被容器包含,不能够单独显示。
  TextField文本域对象的用法如下所示:
  package fancy.test;
  
  import javax.microedition.midlet.*;
  import javax.microedition.lcdui.*;
  
  public class ShowTextField extends MIDlet implements CommandListener
  {
  private Display display;
  private Form props;
   private TextField txtField;
  
  private Command exitCommand = new Command("Exit", Command.EXIT, 1);
  
  public ShowTextField()
  {
  display = Display.getDisplay(this);
   }
  
  public void startApp()
  {
  props = new Form("Hello World");
  props.append("Hello World!\n");
  txtField=new TextField("EMail:", "", 15,TextField.EMAILADDR);

网管网www_bitscn_com


  props.append(txtField);
  props.addCommand(exitCommand);
  props.setCommandListener(this);
  display.setCurrent(props);
   }
  
  public void commandAction(Command c, Displayable s)
  {
  if (c == exitCommand)
  {
  destroyApp(false);
   notifyDestroyed();
  }
   }
  
  public void destroyApp(boolean unconditional)
  {
   }
  
  public void pauseApp()
  {
  display.setCurrent(null);
  props = null;
   }
  
  }
   请注意startApp()方法,我们使用Form对象作为当前屏幕的显示对象,而将TextField对象作为Form的一个子项目显示。下面来介绍TextField类的构造函数,第一个参数是文本域的名称,第二个参数是缺省值,第三个参数是长度,第四个参数是文本域的类型,可选的值有: TextFi
  eld.PASSWORD、TextField.EMAILADDR、TextField.PHONENUMBER、TextField. URL、TextFi
  eld. NUMERIC等等。构造好TextField对象之后,调用Form的append()方法将它添加到Form对
  象的子项目中。ShowTextField.java程序的运行效果如下图所示:

网管网www.bitscn.com


  
  DateField对象
  发信站: 北大未名站 (2001年10月20日20:39:14 星期六) , 站内信件
  
   DateField对象和TextField对象一样同属于项目类型的对象,不能够单独显示,必须作为容器对象的子项目显示。DateField对象的作用是显示一个日期,它和Windows控制面板中的时间和日期设置程序有点近似。DateField对象的用法如下所示:
  package fancy.test;
  
  import javax.microedition.midlet.*;
  import javax.microeditio

TAGs学习   对象   TextBox   newCommand   命令   TextField   showScreen    
 上一篇:J2ME学习札记3   下一篇:J2ME学习札记1
相关文章列表
J2ME学习札记2 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
1.SCJP考试题310-025
2.Java认证SCJP考试四折优惠
3.Java编程思想读书笔记(第5-7章)一
4.Java程序员就业前景
5.现在应该考 SCJP 1.2 还是 SCJP 1.4?
6.JAVA的学习体会
7.Java认证权威问答精华集
8.J2ME学习札记2
9.Sun认证Java程序员5.0升级版本
10.SUN SCJP考试优惠活动
最新推荐文章:
1.Java认证权威问答精华集
2.Java认证SCJP考试四折优惠
3.SUN SCJP考试优惠活动
4.Why I get Solaris Certification?
5.CSA 现身说法
6.JAVA的学习体会
7.java考证的感想
8.SCJP学习指南
9.Java的故事
10.SCJP考试心得
网管论坛交流:
·不疯魔不成活
·令你大开眼界的真正标准化机房,已整理重
·为赈灾,女孩舍身拍“裸照”
·Windows Server 2003服务器群集创建和配
·exchange2k3全套官方资料
·双儿一周岁了。。。特殊的礼物来啦。。
·存储备份技术版块守则
·无盘技术交流区守则
·DOS命令基础大全之命令详解<作者吐血
·Windows XP 操作系统默认设置需要注意的