4.3 高级用户界面编程
高级用户界面是手机界面编程中重要的一类界面,该类界面不需要修改就可以在所有支持JAVA的手机上运行,虽然界面显示会不尽相同,但是不影响界面的功能实现。所以该类界面以其方便的特性,成为手机应用软件编程的首选。
但是由于需要适应所有的手机屏幕,所以高级界面的种类有限,表现力比较差,所以在游戏开发中使用较少,而且高级界面无法实现一些低层的功能,例如响应用户的按键等。
高级界面编程的学习主要分为三部分内容:
u 高级界面容器类的使用,包括Form、List、TextBox和Alert四个,可以独立显示。
u 控件类的使用。
u 事件处理
下面分别进行介绍。
4.3.1 高级界面容器类使用
容器类是指可以独立显示的界面类,这类界面独占整个手机屏幕。关于容器类的介绍可以参看4.1节或API文档。
对于容器类的学习,需要熟练掌握每个容器类的适用场合,例如Form类一般制作较负责的界面,List一般实现菜单等条目显示的界面,Alert一般用于提示框,TextBox一般用来显示多行文字等,以及容器类的构造方法等的使用,这些请查阅各类的构造方法使用以及参数的意义等。
对于容器类的使用一般分为两种形式:
u 直接使用
直接使用是指直接使用界面类来创建对象,然后进行显示。使用该种方式一般显示比较简单的界面。使用示例如HelloMIDlet.java所示。
在HelloMIDlet.java的构造方法中,使用Form类的构造方法创建了一个界面f,并在界面中添加了一行文字,最后显示该界面,代码如下:
//创建界面,标题是Hello
Form f = new Form("Hello");
//在界面中显示字符串
f.append("第一个J2ME程序");
//在手机中显示该界面
display.setCurrent(f);
在这里直接创建了Form类的对象,然后显示该界面对象,显示时使用Display对象中的setCurrent方法显示。
u 继承
继承是指通过声明一个新类来继承需要使用的界面类,然后扩展该类的内容。这种使用方式符合面向对象的思想,但是因为增加类的数量,会增大最终程序的大小,所以在现在要求苛刻的环境下使用较少。
使用继承方式实现类似HelloMIDlet界面功能的代码如下。其中AnotherHelloMIDlet类实现MIDlet的生命周期,ExtendsTypeForm类实现继承Form类,以继承的方式使用Form类,并在AnotherHelloMIDlet类的构造方法中创建对象并进行显示。代码如下:
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
/**
* 使用继承方式实现高级界面
*/
public class AnotherHelloMIDlet extends MIDlet{
/**显示控制对象*/
private Display display;
public AnotherHelloMIDlet(){
//创建显示控制对象
display = Display.getDisplay(this);
//创建界面
ExtendsTypeForm f = new ExtendsTypeForm();
//在手机中显示该界面
display.setCurrent(f);
}
public void startApp(){}
public void pauseApp(){}
public void destroyApp(boolean b){}
}
import javax.microedition.lcdui.*;
public class ExtendsTypeForm extends Form{
/**
* 默认构造方法
*/
public ExtendsTypeForm(){
super("Hello");
//添加字符串
this.append("第一个J2ME程序");
}
}
其他界面类的使用和该方式类似,可以在实际的开发过程中,根据需要选择合适的界面类以及合适的使用方式。
小作业:
1、使用以上两种实现方式实现一个游戏菜单,包括开始游戏、继续游戏、帮助、关于等菜单项。
2、在实现以上界面后,实现帮助和关于界面,并思考如何将以上界面关联。