2.5 GUI
J2SE提供了丰富的UI组件也强大的UI展示技术,甚至可以java代码通过applet植入到web页面中。
在标准的J2ME编程中,我们放弃掉了大量需要消耗系统资源的UI支持,转而针对小型的终端设计了一个特殊的包
由于在MIDP手机编程中,没有控制台的概念,所以所有的MIDP手机软件都必须有自己的界面,下面就熟悉一下MIDP的界面类体系。
首先说明的是,MIDP的标准界面类都位于javax.microedition.lcdui包中,使用时一定要记得引入。
在界面体系中,所以可以直接显示的界面类都继承自同一个父类——Displayable。根据是否能直接操作屏幕,以及是否和屏幕尺寸相关,MIDP的界面类分为两大类:
1) 高级用户界面——和屏幕大小无关,不能直接操作屏幕
高级用户界面类可以不需要修改就可以在所有支持Java的手机上显示,不同的手机显示方式会有所不同,但功能均可以正常使用。特别适合做对于界面要求不高的手机应用软件。
高级用户界面中的类又分为两个部分:
1、容器类
容器类是指直接或者是间接继承自Displayable,可以直接在屏幕上显示的类。这些类都有一个统一的父类——Screen类,其他的都是实现的容器类,包括以下几个:
Alert——提示框
Form——窗体
List——列表框
TextBox——文本盒,多行文本框
以上这些类除了Screen类以外,都代表一类界面,在实际的开发过程中,即可以直接使用(只使用其对象)也可以使用继承。
2、控件类
控件类是指那些不能在屏幕上直接显示,必须添加到容器类(注:MIDP中的所有控件类均只能添加到Form中)才可以显示的类。这些类也有一个统一的父类Item类,其它的都是实现的控件类,包括以下几个:
ChoiceGroup——选择框,包括单选和多选
DateFiled——日期文本框
Gauge——进度条
ImageItem——图片项目
StringItem——可变字符串项目
TextFiled——单行文本框
在MIDP2.0中,新增两个控件:
CustomItem——个性化项目,可以实现自己的控件
Spacer——空白
在实际的使用中,根据界面的需要,选择合适的控件种类,然后添加到Form中进行显示。
2) 低级用户界面——和屏幕大小相关,可以直接操作屏幕
低级用户界面可以让程序员直接操作界面,例如可以在屏幕上方便的绘制图片、文字以及基本的图形等,可以在手机中表现复杂的界面,所以很适合进行手机游戏以及移动证券之类的软件开发。但是低级界面一般和屏幕大小关系比较密切,所以在不同的手机型号之间实现的时候,一般需要进行移植。
低级用户界面主要包括两个类:
1、Canvas——手机画布
该类代表手机屏幕,包含获得屏幕属性的一系列方法、事件处理的方法,以及最核心的paint绘制方法等。在MIDP2.0中该类有一个子类——GameCanvas。
2、Graphics——画笔
系统所有的绘制动作都通过该类实现,包含一般的绘制方法、设置字体或颜色的方法以及一些技巧操作的方法等。
低级用户界面可以理解为使用Graphics这样一个画笔类在Canvas上进行绘制。
当然还有一个在高级用户界面和低级用户界面都可以使用的类——Command(软按钮类),使用该类可以在界面中实现软按钮的功能。
这种编程习惯和改变,是与J2SE的差别很大的,所以也有一种说法是突破了MIDP的UI,也就突破了J2ME的编程。
在BlackBerry上的MIDP编程部分,我们回过头来考虑如何进行有效的UI编程。
2.7 Applet
这个是专属J2SE的东西,J2ME没有支持,实际上Midlet的设计很多是参考了Applet的。
2.8 Network
相比较J2SE不断升级的在网络编程上的支持和复杂的开发流程,J2ME的网络编程显得非常轻巧,相比较于如下的J2SE的庞大的网络编程类库,J2ME的网络编程显得异常简单。
J2ME的MIDP在javax.microedition.io程序包中提供了一整套类,统称为通用连接构架(Generic Connection Framework ,GCF)。GCF使得与其它设备的可编程传输(programmatically transferring)数据变得非常容易。
通用连接框架(Generic Connection Framework,GCF)为资源有限的设备提供了一个可扩展的、通用的I/O 框架。GCF 是一组在 javax.microedition.io 包中定义的接口。
在 GCF 中共定义了七个接口 ,其中 Connection 是最基本的连接类型。且同时提供了对数据包和流连接的支持。沿着层次结构向下派生出提供更多功能的接口。例如, StreamConnection 接口支持输入流和输出流, ContentConnection接口又扩展了 StreamConnection 接口以支持对流的内容类型、数据长度和编码格式的确定,HttpConnection接口又扩展了ContentConnection接口以支持对于标准的HTTP请求。如在框架层规定的适用于手机或双向寻呼机的移动信息设备框架MIDP(Mobile Information Device Profile)在其MIDP 1.0 规范只要求设备支持 HTTP 连接协议,而更新的 MIDP 2.0 规范要求同时支持 HTTP 和 HTTPS,后者提供了对更安全的网络连接的支持
2.9 Database
在J2SE中,通过标准的JDBC的数据库访问,基本上已经成为一种标准。但是J2ME的框架下,数据库的操作没有直接支持,没有JDBC的直接支持。
在J2ME编程中,如果涉及到database操作,可以参考使用一些方法转换数据库应用,比如web service。