分享
 
 
 

MIDP图形用户界面结构分析

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

图形用户界面编程在程序开发中非常重要,因为这是程序和用户之间交互的桥梁。很难想象一个应用程序没有用户界面。在J2SE中我们可以通过AWT/Swing开发图形用户界面,也可以使用近期备受关注的SWT。在J2ME专家组织定MIDP中的图形用户界面的时候,考虑到设备的性能比较有限,AWT/Swing主要是针对桌面应用程序而设计的原因,最终没有采用AWT/Swing作为MIDP的图形用户界面库。而重新设计了小巧的javax.microedition.lcdui包。本章将主要讲述MIDP图形用户界面的体系结构,并对各个类的作用和使用作简单的介绍。

本文将按照MIDP2.0的规范进行介绍,我们必须清楚地知道在MIDP图形用户界面中是有低级图形用户界面和高级图形用户界面分别的。同样事件处理机制也有高低之分。

首先我们通过图表来展示一下MIDP2.0中图形用户界面的体系结构

从结构中我们可以看到,Displayable是所有用户界面组件的超类。从Displayable中分出两个分支一个是Screen,另一个是Canvas。前者是高级图形用户界面的超类,后者是低级图形用户界面的超类。首先我们来看高级图形用户界面,Screen的四个子类分别是TextBox,List,Alert和Form。其中前面三个是预定义类型的组件,他们的内容基本定义好了,比如TextBox就是多行的输入框。而最后一个Form类是开放类型的,也可以成为容器类型。Form是负责管理Item的(Item后面我们会谈到),Form根据Item的信息对他们进行布局等规划。下面我们分别来描述一下这四个高级图形用户界面组件的功能

TextBox是提供给用户输入多行数据的组件,我们也可以对用户的输入进行类型的限制。构造器如下TextBox(String title, String text, int maxSize, int constraints)

List是提供给用户选择选项的组件,List实现了Choice接口。通常它可用做制作菜单和列表式信息如电话本。构造器如下

List(String title, int listType)

List(String title, int listType, String[] stringElements, Image[] imageElements)

Alert则是用来在一段时间内显示信息给用户看,也可以作为确认框使用。构造器如下

Alert(String title)

Alert(String title, String alertText, Image alertImage, AlertType alertType)

Form作为容器类,是通过在其中添加相应的Item来收集用户输入信息的,比如添加TextField。构造器如下

Form(String title)

Form(String title, Item[] items)

最后我们必须要介绍的一个类就是Display,它是设备屏幕的代表,在我们的程序中只有一个Display的引用,通过方法Display.getDisplay(MIDlet midlet)得到。通过它我们得到当前设备屏幕的一些信息,比如色彩之类,但是最重要的是我们通过Display的setCurrent()方法来展现给用户不同的屏幕。

下面我们必须介绍的是Item类,它是所有能够被添加到Form容器上的组件的父类,我们来看看Item的继承结构图

在MIDP2.0中,Item的子类共有8个,他们的功能各不相同,这里不再进行一一的介绍了。只对其中比较常用的类进行简单讲解。TextField类是我们经常使用的,它只能提供单行的输入。DateField类提供给用户输入日期的功能,ChoicGroup同样是实现了Choice接口,我们可以通过模式来把它用作单选和多选。CustomItem是在MIDP2.0中提供给用户的,其实它是介于高级和低级之间的用户界面,我们可以把它叫做增强型图形用户界面,因为它可以添加到Form中,且可以通过实现一系列的抽象方法来绘制自己。比如你可以实现一个表格组件。

Canvas类是所有低级用户组件的父类,我们通过实现Canvas类的paint(Graphics g)方法来绘制屏幕,主要是使用Graphics类提供的各种方法。在MIDP2.0中提供了一个GameCanvas类,是专门为游戏开发设计的。关于Canvas类可以说的很详细,但是这里只是为了介绍体系结构所以不再多说了。

接下来我们来看看MIDP图形用户界面中的事件处理机制,在高级图形用户界面中我们必须了解的是三个Listener和一个Command,其中的原理就是回调机制,回调在图形界面编程中广泛采用,它的原理就是底层函数调用高层函数,在java中我们定义一个接口,比如CommandListener,接口中定义一个方法比如commandAction(Command cmd,Displayable displayable)。当用户触发事件发生的时候,比如用户按下了一个Command,那么定义在CommandListener中的commandAction()方法会被调用,来处理相关的操作。其他两个Listener,ItemStateListener和ItemCommandListener的原理和CommandListener的原理一样不再多说。使用高级事件处理的时候,我们遵循的步骤就是,实现接口-注册监听器。

低级事件处理比较复杂,需要我们判断用户的输入来进行相应的处理。针对键盘事件,如下三个方法用来接收用户的输入

keyPRessed(int keyCode)

keyReleased(int keyCode)

keyRepeated(int keyCode)

针对触摸屏事件,我们可以通过如下方法来接受用户输入事件。

pointerDragged(int x, int y)

pointerPressed(int x, int y)

pointerReleased(int x, int y)

关于低级事件的更多介绍,请参考本站的其他文章,这里不再讲解。

总结:本文并非针对某一问题进行详细的分析,而是通过对体系结构的介绍让大家从总体上把握MIDP的图形用户界面。其实我们的学习就是在头脑中对外界知识进行整理和消化的过程,经常有意识的去总结和抽象对学习是很有帮助的。

(出处:http://www.knowsky.com)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有