解读 LWUIT 之五:LWUIT 控件(下)
解读 LWUIT 之五:LWUIT 控件(下)
LWUIT 开发指南下载
作者写的 Hello TabbedPane、Hello TextArea、Hello TextField、Hello Calendar、Hello Tickering 源代码下载
本文继上篇博客继续对 LWUIT 常见控件进行介绍。本文主要介绍剩余的几个 LWUIT 常用控件选项卡(TabbedPane)、文本区域(TextArea)、文本框(TextField)、日历(Calendar)、滚动特效(Tickering)、双向语言(Bidi)的使用并附源代码。文章对这几种控件分别进行了说明和比较。
注:源码编写中关于 .res 的编写这里不再赘述,详细编写步骤请参考作者的前一篇博客《解读 LWUIT 之二:关于 LWUIT 开发指南中的 Hello World》。每个项目的 .res 具体配置请到作者上传源码中的 res 目录下使用 ResourceEdit 查看。
com.sun.lwuit.TabbedPane 控件
TabbedPane 可以把不同的内容放在不同的页项下面,这些内容只有在用户选择了该页项后才显示出来。系统默认显示第一个页项的内容。HelloTabbedPane 源代码如下:
HelloTabbedPane 运行效果图如下:
com.sun.lwuit.TextArea 控件
TextArea 调用系统本地编辑器使用户可以输入文本。程序员通过对 TextArea 的定义可以限制用户输入的内容,比如只接收数字输入。HelloTextArea 源代码如下:
HelloTextArea 运行效果图如下:
com.sun.lwuit.TextField 控件
下面来认识一下 LWUIT 中的一个闪亮的控件——TextField。大多数 JavaME 框架用户编辑文本只能调用系统本地编辑器,用户编辑文本的时候即切换到了另一个画面,就好像另启动了一个程序(事实也是如此),用户体验很是不爽。有没有一种输入控制,可以让用户在当前界面中直接输入?LWUIT 可以做到:使用 TextField。HelloTextField 源代码如下:
HelloTextField 运行效果图如下:
任何美好的东西都有瑕疵,而看起来很美好的 TextField 的缺陷却是致命的:不支持本地语言输入(即使你的真机提供了对本地语言输入的支持),只能接收英文输入。这一个缺陷让 TextField 的用武之地大大减小。但是 TextField 确是 LWUIT 的闪光点,它证明了 LWUIT 的设计者们处处在考虑用户体验,LWUIT 是一个优秀的框架。
com.sun.lwuit.Calendar 控件
Calendar 和 JavaME 中的 java.util.Calendar 重名,用时一定要注意。com.sun.lwuit.Calendar 用于 UI,java.util.Calendar 用来日期管理。HelloCalendar 源代码如下:
HelloCalendar 运行效果图如下:
Tickering 滚动特效
Tickering 设置 Label 内容滚动效果。Label.startTicker(long delay, boolean rightToLeft); 方法中 delay 设置滚动速率(delay 越大,滚动地越慢),rightToLeft 可以设置滚动方向。HelloTickering 源代码如下:
HelloTickering 运行效果图如下:
Bidi 双向语言
Bidi 即 bidirectional,设计的本意提供双向语言支持,因为西方语言是从左到右写(LTR),而有些语言则是从右到左(RTL)。这是一个阅读/书写习惯。程序中如果想支持 RTL,只需要在 MIDlet 的 startApp 方法中加上 UIManager.getInstance().getLookAndFeel().setRTL(true); 句即可。下面是 LTR 和 RTL 两种效果图的比较。
LTR 的 ComboBox 效果图:
RTL 的 ComboBox 效果图:
注意比较 LTR 和 RTL 两种方式下滚动条、选项、菜单软键等的排列方式。