4.3.1 高级界面容器类使用
 

4.3 高级用户界面编程

       高级用户界面是手机界面编程中重要的一类界面,该类界面不需要修改就可以在所有支持JAVA的手机上运行,虽然界面显示会不尽相同,但是不影响界面的功能实现。所以该类界面以其方便的特性,成为手机应用软件编程的首选。

       但是由于需要适应所有的手机屏幕,所以高级界面的种类有限,表现力比较差,所以在游戏开发中使用较少,而且高级界面无法实现一些低层的功能,例如响应用户的按键等。

       高级界面编程的学习主要分为三部分内容:

u       高级界面容器类的使用,包括FormListTextBoxAlert四个,可以独立显示。

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、在实现以上界面后,实现帮助和关于界面,并思考如何将以上界面关联。