J2ME学习笔记(5)--Form类的学习

来源:互联网 发布:西安汇知中学 编辑:程序博客网 时间:2024/05/25 01:36

Form类的学习 

     Form是Screen的子类,它可以包含图像,只读文本,可编辑文本,编辑日标尺,选项组以自定义项目,这些元素者是Item类的子类,亦Form类作为一个容器,可以容纳Item子类的组件。MIDP实现可处理Form的布局,元素的切换各滚动,包含在Form中的任何组件都没有任何滚动机制,而是整齐个内容一直起滚动。

    Form的构造方法有两种形式。

    Form(String title)//创建一个有标题的没有项目的Form对象

   使用上面这个构造方法后要结合append方法或insert方法动态的插入元素

    Form(Stirng title, Item[] item)//创建一个有标题有项目元素的Form对象

  下面是Form类的构造方法的Demo

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

public class FormDemo extends MIDlet implements CommandListener
{
 private Display display;
 private List list;
 private Form form1;
 private Form form2;
 private Command exit;
 private Command back;
 public FormDemo()
 {
  display = Display.getDisplay(this);
  back = new Command("返回", Command.BACK, 0);
     exit = new Command("退出", Command.EXIT, 1);
  list = new List("表单的例子",List.IMPLICIT);
  list.append("第一个表单", null);
  list.append("第二个表单", null);
  list.addCommand(exit);
  list.setCommandListener(this);
  form1 = new Form("第一个表单");//表单的第一种构造方法
  form1.append("表单一:字符串一");
  form1.append("表单一:字符串二");
  form1.addCommand(back);
  form1.setCommandListener(this);
  StringItem[] str = {new StringItem("表单二:","字符串一"),new StringItem("表单二:","字符串二")};
  form2 = new Form("第二个表单", str);//表单的第二个构造方法
  form2.addCommand(back);
  form2.setCommandListener(this);
 }

 public void startApp()
 {
  display.setCurrent(list);
 }

 public void pauseApp()
 {

 }

 public void destroyApp(boolean condition)
 {

 }

 public void commandAction(Command command, Displayable displayable)
 {
  if(command == List.SELECT_COMMAND)
  {
   switch(((List)displayable).getSelectedIndex())
   {
    case 0:
     display.setCurrent(form1);
     break;
    case 1:
     display.setCurrent(form2);
     break;
   }
  }
  
  if(command == back)
   display.setCurrent(list);
  if(command == exit)
  {
   destroyApp(false);
   notifyDestroyed();
  }

 }

}

    Form中的元素可以使用追加,删除,插入,设置等方法进行编辑,这些元素都通过其索引值引用,方法Form.size()可以返回它所包的元素数量,而Form中元素的索引值的取范围在0到Form.size()-1之间方法.append()用来把一个元素增加到Form中, insert()用来向指定元素插入新元素,delete()方法可以删除一个指定的元素,set()方法可以用新元素替换指定的元素.

 一个元素互多只可以放进一个Form对象,如果应用程序打算一个已经属于某个Form的元素放进Form对象,会抛出IllegalStateException异常.

 当用户与Form屏幕进行交互,并且元素间进行切换和滚动操作时不会引起应用程序的可见事件,只有当用户改变了Form中可交互元素的状态时,系统会通知应用程序,这个通知是通过调用itemStateChange()方法完成.当然事件听者要实现ItemStateChageListener接口.

 Form对象中的布局策略是垂直的,按列(row)进行组织,列与屏幕的宽度,空白,滚动条等是相关的,所有的列在Form中可能会有相同的宽度,在Form的高度依赖于行的数量和单行的高度,而行的高度由放置于些的items所决定,MIDP实现可能变行的高度来适应屏显示。在MIDP2.0规范中,Form中的Item可以设置布局策略,在水平方向各垂直方向结合起来分配元素项,并且对于元素项可以设置其大小 

原创粉丝点击