游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1623|回复: 0

使用高级UI制作简单计算程序1 wxh zt

[复制链接]

1367

主题

1993

帖子

2118

积分

金牌会员

Rank: 6Rank: 6

积分
2118
发表于 2006-4-20 15:49:00 | 显示全部楼层 |阅读模式
作者:未知 文章来源:nec
要讲述如何利用MIDP的高级API制作简单的计算应用程序。

♦ 基本的用户接口
Displayable  表示MIDP上的画面  
Display   控制画面的display manager
Image  表示画像的数据
Screen  预先定好结构,不能再增加其他component的画面父类  
List  选择画面。Screen子类
TextBox  输入TEXT的画面。Screen子类
Alert  向用户传达例外状况的画面。Screen子类
Form  能复数配置部分的画面。Screen子类
ItemItem  配置在Form上的部分父类。
ChoiceGroup  选择的Item
TextField   输入TEXT的Item
ImageItem  表示画像的Item
Gauge  表示Gauge的Item
StringItem  表示文字列的Item
DateField  表示年月日和时刻信息的Item
Command  软键
CommandListener   处理Command的接口
ItemStateChangedListener  处理ItemStateChanged的接口


♦ 1-2 高级API和低级API
MIDP用户接口是由高级API和低级API组成。高级API通过高度的抽象强调封装性,对于控件外观提供有限的控制而不支持定义它们。
另一方面,低级API则能够完全控制应用程序的用户接口,能够直接访问输入装置。但是,由于显示屏大小和按键数的不同而经常出现不同的固有装置,就会降低低级API的移植性能。
♦ 1-2-1 Displayable和Display
MIDP的用户接口的基本设置是Display类和Displayable类。用Displayable的对象表示画面本身,Display 的对象是控制这个画面的 display manager。


Displayable有下述3个种类。


Screen   预先定好结构,不能再增加其他的component。(TextBox,List等)  
Form  不通用的Screen可能会导致TEXT、画像、Item混杂  
Canvas  能够控制图表的表示,能够完全访问低级的事件。  



图:Displayable的层次结构



MIDP应用程序中,Display自当别论,一个MIDlet里必须得有一个Display的对象。用Display.getDisplay()能够得到Display的对象。利用Display.setCurrent(Displayable nextDisplayable)等方法能够切换画面。

♦ 1-2-2 Image
为了能利用画像数据,使用Image 对象。Image的对象能在Canvas上绘画。能够配置在Form,Alert,List,ChoiceGroup等要素中。
要制作Image 对象应先使用Image.createImage方法。
在N800上能处理png format画像文件。
高级API
♦ 2-1 运用高级API(Screen子类)
♦ 2-1-1 List
List是实现choice的接口,是能够实现多种选择的组件在Screen的子类中。用以下的构造函数去创建一个List对象。
  • List(String title,int listType)
  • List(String title,int listType,String[] stringElements,Image[] imageElements)


第一个构造函数是用来创建初始化为空的List的,以后list中元素是可添加的。第二个构造函数可用来直接初始化list中元素的。
根据选择方式不同,List分为3类。根据需要可选择任一种类型。

EXCLUSIVE  仅能选择其中一项  
IMPLICIT  目标项一旦选定立即执行
MULTIPLE  同时可选择多项  

  
listType:EXCLUSIVE  listType:IMPLICIT
  
listType:MULTIPLE  

♦ 2-1-2 TextBox
TextBox是Screen的子类。用下面的构造函数对输入的文本内容进行编辑: TextBox(String title,String text,int maxSize,int constraints) 用maxSize指定最大的输入范围、必要时用constraints参数限制输入。下列各项 TextBox的参数可用来特定的输入。

ANY  能够输入任意的text
EMAILADDR  能够输入 e-mail地址  
NUMERIC   能够输入整数值
PHONENUMBER   能够输入除电话号码和数值以外的文字。(能够输入的文字依照机种而定)
URL   能够输入URL


   
TextBox

♦ 2-1-3 Alert
Alert是Screen的子类。它是用来为用户给出提示信息或者图片信息的,当出现异常的时候。以下是它的构造函数:
  • Alert(String title)
  • Alert(String title,String alertText,Image alertImage,AlertType alertType)


用以下的方法设定时间的改变:

  • setTimeout()

对于固定的时间,用以下的方法设定:

  • setTimeout(Alert.FOREVER)

Alert超时后迁移到如下画面。应用程序必须知道Alert超时后要迁移的位置。所以Alert作为现在的画面设定时,必须同时指定其迁移位置。此时,要按如下方式设定。

  • Display.setCurrent(Alert alert , Displayable nextDisplayable)

表示Alert种类的是AlertType。AlertType是null,或者是能设定事先在AlertType上定义的ALARM,CONFIRMATION,ERROR,INFO,WARNING。

   
Alert  

♦ 2-1-4 Form
Form是能够画像、text、选择项等的Item进行复数配置的Screen子类。Item的配置布局几乎全是纵向布局。下面是它的构造函数:

  • Form (String title)
  • Form (String title, Item[] items)


在Form上增加item时,请使用append方法。

  • append(Item item)

  • append(Image img)

  • append(String str)

♦ 2-2 高级API的使用(Item子类)
♦ 2-2-1 Item
Item是一个父类,它的组件能够在Form上添加。Item的层次结构如下图所示。



图:Item类的层次结构图

一个Item只能配置在一个Form中,当一个item插入一个新的Form时,在原先的Form中应用程序就会首先删除它。

♦ 2-2-2 ChoiceGroup
如List所述是实现项目选择的Item子类。同List一样为了能实际安装上Choice接口, 要类似List。

   
EXCLUSIVE  MUTIPLE  

♦ 2-2-3 TextField
TextField是用户输入和修改text的Item。分TextBox的输入限制和尺寸上的限制。获取和修改文字列的方法和TextBox一样。

   

♦ 2-2-4 ImageItem
ImageItem是能够表示画像的Item。ImageItem能表示并布局画像,所以在制作ImageItem时要指定layout,为此参数要按如下表所示。

LAYOUT_DEFAULT   使用画像container的默认设置。
LAYOUT_LEFT  画面的左端
LAYOUT_RIGHT  画面的右端
LAYOUT_CENTER  画面的中央
LAYOUT_NEWLINE_BEFORE  前一画面
LAYOUT_NEWLINE_AFTER  后一画面

♦ 2-2-5 Gauge
Gauge是和进程条一样在用户接口上用条状图表示赋予值的Item,分为交互对话和非交互对话两种。交互对话情况下,用户自己能够变更值,但在非交互对话时,只能从应用程序方操作值。

   
interactive noninteractive

♦ 2-2-6 StringItem
StringItem是表示指定文本的Item。在Form中能够直接显示字符串,但在使用StringItem时,面板也能被显示在表单。

♦ 2-2-7 DateField
DateField是表示年月日和时刻信息的Item。有以下3种方式在创建DateField时。

DATE  设定年月日的信息。
TIME  设定时刻的信息。
DATE_TIME  设定年月日和时刻。

   
日期  时间

♦ 2-3 事件操作
MIDP应用程序中,有两个接口可用于响应用户的输入。一个是Item进行处理事件的ItemStateListener,另外一个是Command进行处理事件的CommandListener。

♦ 2-3-1 Command
命令包含了与事件有关的信息。当一个命令被激活时,事件启动,然后把命令传给事件监听对象进行处理。他的构造函数如下:

  • Command(String label,int commandType,int priority)

CommandType是用来识别Command种类的。有BACK, CANCEL, HELP, EXIT, ITEM, OK, SCREEN, STOP。如果不定义BACK,将无法返回到先前的画面。

♦ 2-3-2 CommandListener
这个接口处理命令事件。命令事件被处理时,相应的类应该实现这个接口。用commandAction方法处理事件。

  • commandAction(Command c, Displayable d)

Displayabled是事件源。事件是表示发生后的Displayable。在应用程序中,有的Displayable a 的Command exit作动过程中所记述的事件处理状况,要使用如下说记述的if文。

public void commandAction(Command c,Displayable d){
  if(d == a && c == exit){
    记述处理
  }
}


进行事件处理时,事件监听器应该列出在显示面板上:

  • displayable.setCommandListner(CommandListener )

♦ 2-3-3 ItemStateChanged事件
在Form画面中,修改TextField的内容和更改ChoiceGroup选择等情况下,用户在更改交互对话的Item时,就会产生ItemStateChanged事件。在应用程序中,即使更改值,也不会产生ItemStateChanged事件。

♦ 2-3-4 ItemStateListener
想获取ItemStateChanged事件,就有必要先实现ItemStateListener。此外,与Command事件时一样,有必要先在Form上添加ItemStateListener。

  • form.setItemStateListener(ItemStateListener)

实现上要使用itemStateChanged方法处理 ItemStateChanged事件。

  • itemStateChanged(Item item)

被传递的Item是变更状态之后的item。特定并处理要变更哪个item时,要使用如下所记述的Form的get方法。根据在form上指定附加的item的号码能够获取Get方法。此时的号码就变成了被附加的序号0、1、2…

public void itemStateChanged(Item item){
  if(item == form.get(0){
    记述处理
  }
}


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-24 07:04

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表