2 J2ME用户界面.ppt_第1页
2 J2ME用户界面.ppt_第2页
2 J2ME用户界面.ppt_第3页
2 J2ME用户界面.ppt_第4页
2 J2ME用户界面.ppt_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、J2ME用户界面,陈旭东 xudong_,2020年8月24日,2,内容,用户界面库的体系结构 Display类 事件处理 Alert类 List 类 - 列表 TextBox 类 - 文本框 Form - 表单,用户界面库的体系结构,javax.microedition.lcdui,2020年8月24日,3,用户界面库,Screen类是高级图形用户界面的父类,使用该类实现的用户界面无需修改就可以在所有支持Java的手机上显示。 Screen类的四个子类分别是TextBox,List,Alert和Form。 TextBox,List,Alert是预定义类型的组件。 Form类是开放的容器类型,

2、可以容纳Item类型的组件以便构成复杂的图形用户界面,2020年8月24日,4,Display类,获取Display对象 利用Display类所提供的静态方法getDisplay() display = Disp lay.getDisplay(this); MIDP中规定每个MIDlet程序只能拥有一个Display对象,2020年8月24日,5,Display对象,一个Display对象却可以拥有多个在屏幕中显示的Displayable对象,即Screen对象和Canvas对象 当前的Displayable指的是当应用在前台时,用户所见的那个Displayable对象。 在MIDlet程序中

3、对Display实例所做的最多的操作应该是设置当前的Displayable对象。 Display.setCurrent();,2020年8月24日,6,实例,在界面类中实现切换界面 UIConvert.java FirstScreen.java SecondScreen.java,2020年8月24日,7,事件处理,在MIDP中,事件处理分为低级事件处理和高级事件处理 低级事件主要指机器上的按钮被按下或触摸屏被触动时所产生的事件 高级事件处理是指通过类似菜单命令的方式来接收用户输入 当用户按下手机的功能键时,屏幕上应该有命令菜单弹出来,然后由用户选择需要执行的命令,2020年8月24日,8,事

4、件处理原理,事件处理原理就是回调机制 事件监听接口 当用户触发事件发生的时候,事件监听接口对应方法会被调用,来处理相关的操作,2020年8月24日,9,命令(Command),一个Command实际上就是一个用户按下设备的某个按钮所产生动作的信息的入口或用户动作的触发器。 命令信息被保存在一个Command对象中。一个Command对象包含三部分信息: label(命令标签) type(命令类型) priority(命令优先级),2020年8月24日,10,创建Command对象,创建Command对象 new Command(退出,Command.EXIT,1) 其中,第一个参数是命令标签,

5、第二个参数是命令类型,第三个参数是该命令的优先级(1代表优先级最高) 命令类型可以是下列8个值之一 Command.BACK:返回前一屏幕; Command.CANCEL:取消当前正在进行的工作; Command.EXIT:退出应用程序; Command.HELP:请求在线帮助; Command.ITEM:选择命令是当前屏幕中的某一项; Command.OK:确定当前正在进行的动作; Command.SCREEN:应用到当前屏幕的命令; Command.STOP:中断当前正在运行的动作。,2020年8月24日,11,建立Command对象关联,Command对象只有与具体的Displayabl

6、e对象以及执行代码进行关联才能发挥作用。 所谓关联是指将Command加入到屏幕显示中 使用Displayable的addCommand()方法。 这样就可以通过按钮、菜单或其他合适的机制进行用户界面或应用程序行为的控制 当用户按下与Command相对应的按钮时,一个触发事件就会产生。为了使应用程序能够接收到该事件,必须在Displayable上注册一个命令监听器CommandListener,2020年8月24日,12,CommandListener接口,CommandListener接口只定义了一个事件处理方法 void commandAction(Command c, Displayab

7、le d) 如用户按下了一个Command,事件监听接口CommandListener对应方法commandAction()会被调用,来处理相关的操作,2020年8月24日,13,Alert类,在MIDP中,模式对话框称为提醒(Alert),它主要用于在屏幕上向用户显示关于异常情况或错误的信息。 Alert类的构造方法 public Alert(String title) public Alert(String title,String alertText, Image alertImage, AlertType alertType) 创建一个alert时,会有一个计时器 ,使用默认的time

8、out值 getDefaultTimeout( )方法 setTimeout()方法,以毫秒为单位,2020年8月24日,14,Alert对象的类型,Alert对象的类型有5种 AlertType.ALARM:警报类型; AlertType.CONFIRMATION:警告类型; AlertType.ERROR:错误类型; AlertType.INFO:信息提示类型; AlertType.WARNING:警告类型。,2020年8月24日,15,实例,AlertDemo.java,2020年8月24日,16,List 类 - 列表,列表(List)类用于显示一系列的字符串和可选的图像。用户可以在列

9、表中移动并选择一个或多个选项,然后通过触发一个命令来完成相应的操作。 List类构造方法如下。 public List(String title,int listType) public List(String title, int listType, String stringElements, Image imageElements),2020年8月24日,17,列表类型,三种类型列表可以选择:IMPLICIT, EXCLUSIVE和MULTIPLE。 可以通过使用Choice接口提供的常数来指定 Choice.EXCLUSIVE(单选)类型的list Choice.IMPLICIT(隐含

10、式菜单)类型的list Choice.MULTIPLE(多选)类型的list 下面的语句生成一个EXCLUSIVE类型的list,标题是 Exclusive的空列表。 List list = new List(Exclusive, Choice.EXCLUSIVE);,2020年8月24日,18,列表类型,2020年8月24日,19,图2-4 单选模式的List,图2-5 隐含模式的List,图2-6 多选模式的List,List对象操作,List对象可进行append(追加)、insert(插入)、set(设置)、delete(删除)、检索等操作 public int append(Stri

11、ng stringPart,Image imagePart) public void insert(int elementNum,String stringPart,Image imagePart) public void set(int elementNum,String stringPart,Image imagePart) public void delete(int elementNum) public String getString(int index); public Image getImage(int index); public int getSelectedIndex(

12、) public int getSelectedFlags(boolean selectedArray_return),2020年8月24日,20,List类使用示例,ListDemo.java,2020年8月24日,21,TextBox 类 - 文本框,文本框类TextBox是显示给用户的,可以用于输入小于指定长度的文本的界面控件。TextBox是一个容器类型的对象。 构造方法如下。 TextBox text = new TextBox(String title, String text, int maxSize, int constraints),2020年8月24日,22,输入数据的约束

13、,构造器参数constraints是对于输入数据的一组约束,其值可以是下列6个值之一。 TextField.ANY:允许输入任何字符或数字; TextField.EMAILADDR:允许输入电子邮件地址; TextField.NUMERIC:只允许输入数字; TextField.PHONENUMBER:只允许输入电话号码的格式; TextField.URL:允许输入URL形式的字符串; TextField.DECIMAL:输入内可以通过Double.valueOf()来转换。,2020年8月24日,23,TextBox方法,存取、删除、插入、替换等操作 public void setStrin

14、g(String text) public String getString() public void setConstraints(int constraints) public int getConstraints() public void delete(int offset, int length); public void insert(char data, int offset, int length, int position); public void insert(String src, int position); public void setChars(char da

15、ta, int offset, int length);,2020年8月24日,24,TextBox类使用示例,TextBoxDemo.java,2020年8月24日,25,Form - 表单,表单(Form)是一个可以放置一组子项(Item)的容器类型,其子项都是独立的用户接口组件,包括只读的和可编辑的文本框、图像、日期域、gauge以及选项组组件等抽象类Item 的子类对象 Form对象负责安排子项显示的具体内容,如位置、大小等。 通常Form对象与一个列表一样从顶到底安排它所包含的各子项。,2020年8月24日,26,Item类及组件,2020年8月24日,27,Form类的构造,For

16、m类的构造方法如下: public Form(String title); public Form(String title, Item items); 用户可以表单中的各个项可以进行编辑操作,如插入,添加和删除。,2020年8月24日,28,Spacer,Spacer是专门用来在Form上边加入一些空白间隔。它不能与用户交互。 构造方法如下: new Spacer(int minWidth, int minHeight); 第一个参数是空白间隔的宽度;第二个参数是空白间隔的高度。 Spacer类使用示例:SpacerDemo.java,2020年8月24日,29,CustomItem,定制项

17、目(CustomItem)可以创立自己的窗体项目。CustomItem是一个介于高级和低级之间的用户界面,通常称它为增强型图形用户界面。 可以添加到Form中,且可以通过实现一系列的抽象方法来绘制自己,这样就可以对用户交互进行细粒度的控制,并实现一个可以适应现有的窗体框架,符合设备本身尺寸的用户界面。,2020年8月24日,30,CustomItem类,CustomItem类的构造方法 protected CustomItem(String label) 参数label是CustomItem名称。 CustomItem 类定义有如下5个必须实现的抽象方法 protected abstract

18、int getMinContentHeight()/返回最小高度 protected abstract int getMinContentWidth()/返回最小宽度 protected abstract int getPrefContentWidth(int height)/ 恢复宽度 protected abstract int getPrefContentHeight(int width)/ 恢复高度 protected abstract void paint(Graphics g,int w,int h) /paint() 方法可以控制项目的外观。,2020年8月24日,31,Cust

19、omItem类,CustomItem的一个重要特性是Form内部的遍历(traversal) protected boolean traverse(int dir, int viewportWidth, int viewportHeight, int visRect_inout) 当用户按下能够引起项目接收焦点的导航键时(通常是箭头键),就调用定制项目的 traverse方法。如果方法返回 true,那么用户下次按下导航键时,还会调用这个方法,循环往复,直到方法返回 false 为止,2020年8月24日,32,CustomItem类,方向按键 Canvas.UP:向上键; Canvas.DO

20、WN:向下键; Canvas.LEFT:向左键; Canvas.RIGHT:向右键; CustomItem.NONE:空值,表示是一些与平台相关的事件,例如改变窗体大小,会使项目获得焦点 CustomItem类使用示例: CustomItemDemo.java,2020年8月24日,33,ImageItem,图像(ImageItem)类用于在Form内显示一幅图像 ImageItem类的构造方法如下 public ImageItem(String label, Image img, int layout, String altText) public ImageItem(String labe

21、l, Image image, int layout, String altText, int appearanceMode),2020年8月24日,34,ImageItem,外观类型( appearanceMode)可以是3个值之一。 ImageItem.PLAIN,用于非交互的图像的显示; ImageItem.BUTTON,以按钮的外观显示图像; ImageItem.HYPERLINK,以超级链的外观显示图像。,2020年8月24日,35,ImageItem,等校线( layout )是用来指定图像显示时所对齐的方向,其值可以是下列6个值之一。 ImageItem.LAYOUT_CENTE

22、R:图像应该显示在屏幕的垂直中部; ImageItem.LAYOUT_DEFAULT:图像应该从屏幕的左上角为起点。默认值; ImageItem.LAYOUT_LEFT:图像应该显示在屏幕的左侧; ImageItem.LAYOUT_RIGHT:图像应该显示在屏幕的右侧; ImageItem.LAYOUT_NEWLINE_BEFORE:图像绘制前先换行; ImageItem.LAYOUT_NEWLINE_AFTER:图像绘制完毕后应换行。,2020年8月24日,36,ImageItem方法,设定或获取ImageItem 对象的等校线 public String getAltText() publ

23、ic void setAltText(String text) 设定或获取ImageItem 对象所封装的Image对象 public Image getImage() public void setImage(Image img) 获取ImageItem 对象所选用的外观 public int getAppearanceMode() ImageItem类使用示例: ImageItemDemo.java,2020年8月24日,37,StringItem,字符串(StringItem)类的作用就是在Form上显示一个字符串,配合不同的外观类型,StringItem可以用按钮或超级链接外观呈现 构

24、造方法如下 public StringItem(String label, String text) public StringItem(String label, String text, int appearanceMode),2020年8月24日,38,StringItem,外观类型( appearanceMode)的可选值有 StringItem.PLAIN,用于非交互的文本的显示; StringItem.BUTTON,以按钮的外观显示文本; StringItem.HYPERLINK,以超级链的外观显示文本。,2020年8月24日,39,StringItem 方法,改变或读取Strin

25、gItem 对象的文本内容 public void setText(String text) public String getText() 获取StringItem 对象所选用的外观 public int getAppearanceMode() 改变或读取StringItem 对象所用字型 public void setFont(Font font) public Font getFont() StringItem类使用示例: StringItemDemo.java,2020年8月24日,40,TextField,文本域(TextField)类在定义与用法上与TextBox类非常相似。它们之

26、间的不同之处在于。 TextBox是多行的,而TextField是单行的; TextBox是容器类型的对象,与Form地位平等,而TextField是Form的子类,它只能够被容器包含,不能够单独显示。 TextField类的构造方法如下。 public TextField(String label, String text, int maxSize, int constraints),2020年8月24日,41,TextField,文本域类型(constraints)的可选的值有:TextField.PASSWORD、TextField.EMAILADDR、TextField.URL、Tex

27、tField.NUMERIC、TextField.DECIMAL、TextField.PHONENUMBER等。 TextField类使用示例: TextFieldDemo.java,2020年8月24日,42,DateField,日期域(DataField)类的目的是让用户能够方便地输入日期或时间。该类是可编辑的,通常是通过系统显示的日历或其它合适的对话框,输入时间或日期。DateField对象的作用与Windows控制面板中的时间和日期设置程序有点近似。 DateField对象和TextField对象一样不能单独显示,必须作为容器对象的子项目来显示。 DateField类的构造方法如下。

28、public DateField(String label, int mode) public DateField(String label, int mode, TimeZone timeZone),2020年8月24日,43,DateField,参数mode为输入模式,其取值为下面3个可能取值 DataField.DATE,此模式仅限于日期; DataField.DATE_TIME,此模式包括了日期和时间; DataField.TIME,此模式仅限于时间。 参数timeZone是一个java.util.TimeZone对象,2020年8月24日,44,DateField方法,改变或读取Da

29、taField的输入模式 public int getInputMode() public void setInputMode(int mode) 设置或读取用户指定的时间 public void setDate(Date date) public Date getDate() 需注意的是,Date对象必须与java.util.Calendar对象一起使用 DateField类使用示例: DateFieldDemo.java,2020年8月24日,45,Gauge,滑杆(Gauge)类用于显示某个范围内的值,通常使用滑杆图来表示。其显示范围的最小值是0,最大值由程序员根据不同的需要进行设定。设

30、定之后,当前值就会始终处于最小值和最大值之间。 Gauge的最大用处就是用作进度显示使用。 Gauge 类构造方法如下: public Gauge(String label, boolean interactive, int maxValue, int initialValue),2020年8月24日,46,Gauge,参数initialValue只能取下面4个值之一。 Gauge.CONTINUOUS_IDLE:表示目前程序停止,即一个静止的图; Gauge.CONTINUOUS_RUNNING:表示目前程序正在运行,即一个动画图; Gauge.INCREMENTAL_IDLE:表示目前程序停止,即一个静止的图; Gauge.INCREMENTAL_UPDATING:表示目前程序正在运行,即一个动画图,但只有每次重新调用setValue方法时,画面才会漫漫更新,2020年8月24日,47,Gauge方法,设置或读取滑杆的当前值或最大值 public void setValue(int value) public int getValue() public void setMaxValue(in

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论