J2ME学习札记2

2016-02-19 14:03 2 1 收藏

下面是个超简单的J2ME学习札记2教程,图老师小编精心挑选推荐,大家行行好,多给几个赞吧,小编吐血跪求~

【 tulaoshi.com - 编程语言 】


  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);
   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!");
  
  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);
  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;
  }
  
  }
   在上面的程序(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);
  }
  
  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值,那么第三个参数可以任意设。
   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!");
  txtField=new TextField("EMail:", "", 15,TextField.EMAILADDR);
  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程序的运行效果如下图所示:
  
  DateField对象
  发信站: 北大未名站 (2001年10月20日20:39:14 星期六) , 站内信件
  
   DateField对象和TextField对象一样同属于项目类型的对象,不能够单独显示,必须作为容器对象的子项目显示。DateField对象的作用是显示一个日期,它和Windows控制面板中的时间和日期设置程序有点近似。DateField对象的用法如下所示:
  package fancy.test;
  
  import javax.microedition.midlet.*;
  import javax.microeditio

来源:https://www.tulaoshi.com/n/20160219/1606046.html

延伸阅读
一.代码优化 内存会溢出肯定和代码逃不了关系,99.99%学java的人都知道垃圾回收器是java的一大优点并据此来嘲笑C++。显然这个特性为代码编写者省了不少事,但这个特性却带来了不少隐患。举个例子在游戏当中经常有不同场景的切换,如从游戏逻辑退到主菜单逻辑,对游戏逻辑对象的态度很多人会选择忘记等待垃圾回收器来收尸。乍看之下似乎...
Java 2 Micro Edition (J2ME)是建立在一个由profiles,配置,虚拟机和主持操作系统等部分所组成的标准架构之上的。这些内容组成了完整的J2ME实时运行环境。图A显示了这些部分是如何结合在一起的。J2ME提供了两种配置:Connected Limited Device Configuration (CLDC)和the Connected Device Configuration (CDC)。这两种配置以设备的内存fo...
一.代码优化 内存会溢出肯定和代码逃不了关系,99.99%学java的人都知道垃圾回收器是java的一大优点并据此来嘲笑C++。显然这个特性为代码编写者省了不少事,但这个特性却带来了不少隐患。举个例子在游戏当中经常有不同场景的切换,如从游戏逻辑退到主菜单逻辑,对游戏逻辑对象的态度很多人会选择忘记等待垃圾回收器来收尸。乍看之下似乎并无不...
假如您曾经到http://www.Javasoft.com 网站上查询有关Java 2 Micro Edition 的资料,十之八九会被一大堆的技术名词搞的一头雾水。什么 KVM ,什么CLDC 、CDC 、MIDP ,后面还冒出了Personal Java 、Embedded Java以及JES 等名词。虽然名为Java 的微小版本,可是它的世界可真是不小,让我们满肚子「见山不是山,见水不是水」的迷惑。的确,在我刚...
不知道主题为"J2ME中的内存泄漏"是否妥当,不过在J2ME中假如处理不好资源的创建和释放问题,也会出现类似在CC++中的内存泄漏现象。 J2ME中最常使用的资源无非是图片和声音。为了提高游戏的运行速度,我们通常把它们声明为全局变量,又由于手机的内存的关系,我们不能把这些资源同时加载进内存,所以我们会在使用的时候导入资源(创建对...

经验教程

257

收藏

56
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部