Java手机软件图形界面API之Form相关API

2016-02-19 11:59 8 1 收藏

最近很多朋友喜欢上设计,但是大家却不知道如何去做,别担心有图老师给你解答,史上最全最棒的详细解说让你一看就懂。

【 tulaoshi.com - 编程语言 】

除了基于屏幕的组件外,你还应该掌握使用表单把多个组件组织到一个屏幕上去。这一部分将讨论Form类和可以放置到表单上去的组件。

1. Form

一个表单对象是一个screen,它可以包含任意的项,包括只读的和可编辑的文本框,图像,日期域,gauge以及选项组组件。前面已提到,任何Item类的子类都可以放置到表单对象上去。Form类的构造器如下:

public Form(String title);
public Form(String title, Item[] items);

第一个构造器创建一个空的表单,仅有一个标题。第二个构造器创建一个含有标题和初始内容的表单。如,下面的程序创建一个空的表单,其标题是"Choose an Item",见图1。这是一个常规的屏幕。


图 1.一个空的form

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

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 的子类。稍后,我们将看到如何把这些项放置到屏幕上去。首先让我们依次作一下介绍。

2. Item

Item抽象类用作可以放置到表单或者alert上的组件的基类。所有的Item对象都有一个标签(如有一个字符串依附到其上),这可以用下面方法存取:

public String getLabel( );
public void setLabel(String s);

该抽象类仅有这两个方法。

3. ChoiceGroup

ChoiceGroup对象描述了一组放置在表单上的可选择的选项。类似于List类,它也实现了Choice接口,而且还继承了Item抽象类。该对象可以指明选择一项,或者进行多个选择。ChoiceGroup类构造器如下:

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方式则允许一次选择多个项)。

第二个ChoiceGroup构造器用于创建一个新的ChoiceGroup对象,同时指明其标签和类型,还有一个字符串数组和一个图像数组来设置它的初始值。

一旦你创建一个空的选择,你就可以插入,添加或替换其中的选项,就象在一个List组件上一样。而且,每一个选项有一个整数索引值来代表其在列表中的位置。第一个选项从0开始,最后一项索引值是该列表的最大长度减1。ChoiceGroup 类提供了下面方法来完成这些操作。

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);
下面代码把几个新的选项添加到选择组上。

choices.append("Visa", null);
choices.append("Master Card", null);
choices.append("Amex", null);

类似于一个列表中的选项,在一个选项组中的项可以用插入,添加,删除等方法进行编辑。而且,每一个选项被其索引值所参照。如,下面一句可删除最后一项:

choices.delete(2);
特别注意,一旦一个选项组被创建并投入使用,你不可能象操作列表一样,用setCurrent( )方法来显示之。一个选项组是Item的子类,必须放置到表单上去,表单对象是可用方法setCurrent( )显示的。

Form form = new Form("Choose one");
form.append(choices);
Display.setCurrent(form);

图 2展示了一种EXCLUSIVE型的选项组,图3 展示了一种MULTIPLE型的选项组。注意,IMPLICIT值对于ChoiceGroup类是不可用的;如果使用之,将显示一个IllegalArgumentException异常。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)


图2.一种互斥的选项组 图3.有多个选项的选项组
4. DateField

一个DateField对象是一个可编辑的组件,它描述了可以显示在表单对象上的日历中的日期和时间信息。它可以用于显示日期或者时间信息,或者二者皆有。一个DateField对象可以用下面构造器创建:

public DateField(String label, int mode);
public DateField(String label, int mode, TimeZone timeZone);

第一个构造器用于创建有指定的标签和模式的DateField对象。这种模式可以通过提供一个静态字段(DateField.DATE,DateField.TIME或者DateField.DATE_TIME)来指定。DateField.DATE输入模式允许你设置日期信息,DateField.TIME则用于设置时间信息(小时和分钟),DateField.DATE_TIME用于设置日期和时间两种信息。

DateField对象用下列方法来存取加到表单对象上的属性(记住标签属性在抽象类Item 中定义):

public Date getDate( )
public int getInputMode( )
public void setDate(Date date);
public void setInputMode(int mode);

而且,你可以用toString( )方法来输出一个基于字符串的date或者time数据的拷贝。

public String toString( );
作为一个例子,下面代码创建一个对象,标签是"Today’s date",方式为DateField.DATE:

DateField date = new DateField("Today’s date", DateField.DATE);
为了显示一个date域,可先创建一个Form对象,然后使用它的方法append( )添加date域。

Form form = new Form("Date Info");
form.append(date);

来源:http://www.tulaoshi.com/n/20160219/1599388.html

延伸阅读
1. 修改/etc/inittab,改变runlevel为5,例如 [root@QRedHat etc]# cat /etc/inittab ...... id:5:initdefault: ...... 改为5级别方式运行linux 2. 修改GDM的配置文件,/etc/X11/gdm/gdm.conf,将[xdmcp]中的enable选项设置为1,例如 [root@QRedHat etc]# cat /etc/X11/gdm/gdm.conf ...... [xdmcp] Enable=1 false改为true 3. 修...
标签: Web开发
如果想要在 XPath 表达式中使用名称空间,必须提供对此名称空间 URI 所用前缀的链接。本文介绍了向名称空间映射提供前缀的三种不同方式。本文亦包含了示例代码以方便您编写自己的 NamespaceContext。   前提条件和示例   本文所有的示例均使用如下这个XML文件:   清单1. 示例XML ?xml version="1.0&q...
本文对Java规则引擎与其API(JSR-94)及相关实现做了较详细的介绍,对其体系结构和API应用有较详尽的描述,并指出Java规则引擎,规则语言,JSR-94的相互关系,以及JSR-94的不足之处和展望 复杂企业级项目的开发以及其中随外部条件不断变化的业务规则(business logic),迫切需要分离商业决策者的商业决策逻辑和应用开发者的技术决策,并把这些商业决...
WNetAddConnection创建同一个网络资源的永久性连接WNetAddConnection2创建同一个网络资源的连接WNetAddConnection3创建同一个网络资源的连接WNetCancelConnection结束一个网络连接WNetCancelConnection2结束一个网络连接WNetCloseEnum结束一次枚举操作WNetConnectionDialog启动一个标准对话框,以便建立同网络资源的连接WNetDisconnectDialog启...