探索J2ME:创建开销细节表单

开发者在线 Builder.com.cn 更新时间:2005-06-06作者:builder 来源:

正如我们现在都知道的那样,Item组件族派生于Item抽象类,同大多数家族成员一样,这类组件有很多性质是相同的。首先, Items 可以放在Screen对象上。其次,它们共享单一事件itemStateChange,该事件提示组件所表示的数据发生了变化。

DateField

DateFieldTextField组件的用途从它们的名字就可以看出来。DateField显示日期,用户可以由此通过熟悉的日历界面选择新的日期。DateFields具有若干种模式,具体设置可以这样做:传递三种静态DateField常量之一作为构造器的第2个参数。

  • DateField.DATE_TIME设置DateField为显示日期和时间。
  • DateField.DATE设置组件显示和编辑日期(不对时间操作)。
  • DateField.TIME只显示和编辑时间(不对日期操作)。

因为我们只关心Expenses程序中的日期,所以我创建的dfDateDateField组件具有唯日期属性,如清单A所示。

TextFields

TextField组件显示文本,同时允许用户编辑文本,在功能上类同于桌面应用程序中的文本框。TextFields 支持某些基本的输入限制功能,而且这类功能可以在创建组件的时候由构造器的最后一个参数设置。除了对输入信息进行限制以外,这些约束条件还可以简化电话风格键盘的数据输入操作,因为约束只承认给定键的某些特定字符(比如,只有数字按钮上的数字可以输入)。可能的约束值如下:

  • TextField.ANY:任何信息都可以输入;文本、特殊字符和数值等。
  • TextField.EMAILADDR:只有组成有效电子邮件地址的字符才可以输入。
  • TextField.NUMERIC:只能输入数值。记住,MIDP不支持浮点数值,所以该约束条件只允许输入整数。
  • TextField.PASSWORD:和传统的密码输入方式相同,用星号(*)取代用户输入的密码信息。
  • TextField.PHONENUMBER:只能输入组成有效电话号码的信息。
  • TextField.URL:只能输入合法组成URL的字符。

fmDetail表单包含了两个TextFields:其一是tfDesc,它允许输入事件的文本说明(比如“Lunch”)。其二是tfAmount,它记录开销的美元数量,因此通常由TextField.NUMERIC约束创建。

ChoiceGroup

细节表单的cgCategory组件是一个ChoiceGroup,用户可以把开销放到预先设置的开销类别里: Meals、Lodging、Car、Entertainment或者Miscellaneous。ChoiceGroups 在功能上等同于List组件,后者我在上一篇文章中已经有所介绍,但是它们只支持EXCLUSIVEMULTIPLE格式(没有IMPLICIT ChoiceGrou这类东西)。同样的,作为Item组件,ChoiceGroups 会在操作事件的时候触发itemStateChanged事件,而Lists则触发 commandAction事件。

ChoiceGroup添加项目有两种方法。首先,你可以构造一个空组件然后通过append或者 insert方法加入项目。其次,你还可以传递一个包含项目的String数组(这些项目是你希望ChoiceGroup显示的)给重载的构造器。这两种方法各有高低,但我在这里采用了第2种方法,主要是为了能让我对中央位置保存的类别列表(作为静态数组ExpenseInfo成员)有一定的选择能力。这样就可以很方便地添加新类别或者让用户在将来具有这样做的能力。

ChoiceGroup中给每一项指定图标也是可以的。当然,这里没必要做了免得程序变得复杂,所以我打算在将来的文章中再讨论。

用户评论

  • 用户名
  • 评论内容