public Form(String title); public Form(String title, Item[] items); 第一个构造器创建一个空的表单,仅有一个标题。第二个构造器创建一个含有标题和初始内容的表单。如,下面的程序创建一个空的表单,其标题是"Choose an Item",见图1。这是一个常规的屏幕。
图 1.一个空的form
Form form = new Form("Choose an Item"); Form对象并不使用任何布局管理器。代之的是,Form对象将象一个列表一样安排它的组件,通常是从顶到底。就象一个列表中的选项,表单中的各个项可以进行编辑,如插入,添加和删除。Form类的方法列举如下。
把一个图像加到表单的结尾,可以用:
public int append(Image img); 下面方法添加一个Item 的子类化对象到表单的结尾:
public int append(Item item); 下面方法添加一个字符串到表单的结尾:
public int append(String str); 下面方法删除表单上在给定位置的项,同时改变表单的大小:
public void delete(int itemNum); 你可以使用下面方法存取表单上的任何项,而表单内容保持不变。
public Item get(int itemNum); 下面方法在表单上插入一项,插在指定索引的前面:
public void insert(int itemNum, Item item); 下面方法替换表单上的前一项:
public int set(int itemNum, Item item); 最后,你可用下面size( )方法来查找表单上的项的当前序号:
public int size( ); 可以放置到一个表单上去的GUI组件有:ChoiceGroup,DateField,Gauge,ImageItem,StringItem和TextField。所有这些都是抽象类Item 的子类。稍后,我们将看到如何把这些项放置到屏幕上去。首先让我们依次作一下介绍。
public ChoiceGroup(String label, int choiceType); public ChoiceGroup(String label, int choiceType,String[] stringElements, Image[] imageElements); 第一个构造器创建一个空的ChoiceGroup组件,同时指明其标签和类型。既然该类实现了接口Choice,你可能想到应该有三种选择。但是,在使用一个ChoiceGroup组件时,只有两个选项可用: EXCLUSIVE和MULTIPLE。IMPLICIT类型不适用于ChoiceGroup,就象对于List组件一样。在一个表单中不需要有一个象菜单的选项域(记住EXCLUSIVE方式只允许一次选择一项;MULTIPLE方式则允许一次选择多个项)。
public int append(String stringElement, Image imageElement); public void insert(int index, String stringElement, Image imageElement); public void set(int index, String stringElement, Image imageElement); 注意一个选项由一个字符串和一个可选的图像组成。如,下面代码演示了如何添加几个选项到前述的列表中。注意,方法append( )返回一个索引值(正是我们创建该项时指定给它的),以备后面之用。
int saveIndex = list.append("save", null); int deleteIndex = list.append("delete", null); 而且,你可以用下面方法从该选项组中删除任何索引:
public void delete(int index); 如果你想检索任何索引指定的串元素或图像元素,可用下面方法:
public String getString(int index); public Image getImage(int index); 如果你想设置,取消设置,检索当前选项组中选择的索引,或者查询任何索引以确定它是否为当前选定的项,可以用下面方法:
public int getSelectedIndex( ) public boolean isSelected(int index); public setSelectedIndex(int index, boolean selected); 最后,就象操作List组件一样,你可以使用一个布尔选项标志数组为设置整个选项组的选择状态。注意,getSelectedFlags( )方法并不返回一个布尔数组,而是修改一个已传入的布尔数组(并作为一种优化技术,返回以整数形式表示的被选取的元素的序号)。该数组的长度至少要等于该列表中元素数目,如果还长一些,其余的数组元素值被置为false。
public int getSelectedFlags(boolean[] selectedArray); public void setSelectedFlags(boolean[] selectedArray); 对于MULTIPLE型的列表,setSelectedFlags( )用于设置在列表中每个元素的状态。对于EXCLUSIVE型的列表,布尔数组中只有一项可为true;如果没有为true的元素,则第一个元素被选中。如果有两个或者多个元素为true,系统选择第一个为true的元素并选择之。 下面语句创建一个新的空ChoiceGroup对象,其标题为"Selection",类型为EXCLUSIVE:
ChoiceGroup choices = new ChoiceGroup("Method of payment", Choice.EXCLUSIVE); 下面代码把几个新的选项添加到选择组上。
Form form = new Form("Choose one"); form.append(choices); Display.setCurrent(form); 图 2展示了一种EXCLUSIVE型的选项组,图3 展示了一种MULTIPLE型的选项组。注意,IMPLICIT值对于ChoiceGroup类是不可用的;如果使用之,将显示一个IllegalArgumentException异常。