正如你可能已经了解的那样(如果你恰好不知道,我建议你不妨查阅上面提到的文章),lcdui组件主要分为三种类型:从Screen派生的组件、从Item派生的组件和两者之外的其他综合性组件。Screen和Item组件的主要区别在于:Screen组件为其他组件起到了容器的作用。而组成Expenses用户界面的组件则是名为lsMain的List组件。
Lists 大致可类比于桌面应用程序中常见的列表框,主要的差别在于List在它自己的窗口之内,而其他列表框则通常包含在其他窗口中。Lists是一种Screen对象,它可以包含其他组件,但Lists
也只能包含Command组件。
Lists分三种,在调用List构造器的时候,通过设置list类的静态常量,你可以设定其类别。以下是对三种Lists的概述:
Expenses MIDlet的构造器代码如程序清单A所示。其中,lsMain是implicit List组件;采用append方法为其添加了若干项开销;然后用addCommand方法增加了三个Commands 。最后设置lsMain的命令侦听器(setCommandListener),这样Expenses就可以处理lsMain引发的事件了。
现在到了讨论Command对象的时候。Commands是综合性的控件,类比于桌面应用程序中的命令按钮。主要的区别是,根据具体的平台,
Command按钮有可能不具有相应的屏幕显示外观。在命令按钮的屏幕显示空间不足的情况下,或者在移动设备采用了键区(keypad)导航而非指针导航的情况下, Commands就可以映射为设备上的正确按钮,或者起多种作用的多功能按钮,也就是所谓的“软按钮”。在调用Command构造器的时候你可以指定Command类的若干静态常量,从而设定正确的按钮。
比方说,以下面的cmExit构造器为例:
cmExit = new Command("Exit", Command.EXIT,
1);
在上面的代码中,传递给构造器的第2个参数是Command.EXIT,意思是告诉应用程序管理器cmExit应当映射为键盘Exit按钮,而且只有1个可用。图B列出了你可以设置的命令类型。
图B
你可能已经从图A注意到了,DefaultGrayPhone模拟器并没有显示一个Exit按钮。这是为什么呢?实际上,具体的设计取决于最后的实现,通常情况下,也就是最接近于一个软按钮的情况下会显示Command的文本内容。图A就是这种情况。Exit命令映射到左边的软按钮。如果DefaultGrayPhone具备一个Exit按钮,那么Exit命令就不可能出现在屏幕上,相反它会被映射到设备上的Exit按钮。
用户评论