Java手机软件图形界面API之慨述

2016-02-19 11:58 17 1 收藏

在这个颜值当道,屌丝闪边的时代,拼不过颜值拼内涵,只有知识丰富才能提升一个人的内在气质和修养,所谓人丑就要多学习,今天图老师给大家分享Java手机软件图形界面API之慨述,希望可以对大家能有小小的帮助。

【 tulaoshi.com - 编程语言 】

一、序言

手持设备的用户接口编程不同于桌面微机编程。例如,手持设备的显示尺寸要小,显示设备并不总是包括点击工具如鼠标和笔。由于这些原因,在手持设备的GUI编程时,我们不可能遵循与台式微机编程GUI同样的规则。

CLDC本身并没有定义任何的GUI功能。代之的是,J2ME的官方GUI类用象MIDP这样的轮廓文件所描述,并由JAVA社团组织定义。你可能注意到在MIDP中描述的GUI类不是基于AWT的,这似乎存在很大问题。请往下看。

二、为什么不重用AWT?

经过相当的考虑之后,MIDP专家组决定不再重用已有的AWT和Swing类。原因如下:

·AWT是为桌面微机开发的,并为这种情形作了优化处理。

·AWT设定了某些用户交互模式。AWT的组成当中考虑到了如鼠标等的点指设备,但是许多手持设备,如手机等,只有键盘用于输入。

·AWT具丰富的特性,包括在手持设备上还不能实现的。例如,AWT为窗口管理提供广泛支持,如窗口大小与重叠调用。然而,有限的手持设备的显示空间,使得它上面的窗口调整根本不可能实现。所以,手持设备是用不到AWT的窗口布局管理器的。

·当用户与基于AWT的应用程序交互时,甚至对象是动态创建的。这些对象仅在与之相关的事件被应用程序或系统处理时--此时,这些对象对于垃圾回收器来说是有效的--这些对象才存在。但是手持设备有限的CPU和内存无法承担如此重任。

三、MIDP GUI API

基于以上原因,MIDP创建了它自己的简短的GUI,其与AWT存在相当的不同。MIDP GUI包含了低级的和高级的API两类,这两类AIP各有自己的事件集。本文将讨论并演示通过这两类API来使用对象的例子。通过API操纵事件在下一章中介绍。

高级的API主要应用在移动设备开发特别注重移植性的情况下。为了保证可移植性,API进行了高级抽象,因此给予用户在控件的外观和感觉上极少的控制。例如,你没法定义一个高级组件的可视化外观(形状,颜色或者字体)。大多数与组件的交互由系统实现体所封装;应用程序不必在乎它们。因此,底层的实现上为适应于硬件和本机用户接口风格作了必要的调整。实现了高层API的类全部继承自javax.microedition.lcdui.Screen类。

而低层API作了很少的抽象处理。该设计用于要求对图形元素进行精确控制的场所,这时应用程序还可以对低层输入事件进行存取。这一类API使得应用程序可以对在屏幕上显示的内容进行精确的控制。javax.microedition.lcdui.Canvas和javax.microedition.lcdui.Graphics类实现该低层API。但是,应该明确指出,无法保证存取低层API的MIDlets程序是可移植的,因为这种API提供了存取特定设备的细节操作。

1、MIDP GUI模型

下面是MIDP GUI在内核上如何工作的一个模型。为在某MIDP设备上进行显示,你需要取得该设备的display,这是由javax.microedition.lcdui.Display类来描述的。类Display是唯一的显示管理器,当用于每一个活动的MIDlet时被实例化,并提供方法以检索有关该设备显示能力的信息。

获取设备的显示信息是很容易的。但是,对象本身并不令人感兴趣。而更令人感兴趣的抽象是screen,它封装和组织图形对象并协调通过设备的用户输入。Screen由javax.microedition.lcdui.Screen对象来描述并由Display 对象调用setCurrent( )方法显示。一个应用程序中可有多个screen,但是在某一时刻只有一个screen在屏幕上是可见的(当前的这一个),用户只能遍历在这一个screen上的项。图1显示了在display与它的可能的多个screen之间的一对多的关系。

图1.display与screens间的关系

在MIDP GUI中共有三种类型的screen:

·完全封装了复杂用户接口组件(如List:下图2或者TextBox:下图3)的screen。这些screen的结构是预定义好的,应用程序不能把其它组件添加到这些screen上。

图2.一组互斥的选择项

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

图3.一个文本框的例子

·使用表单组件的普通screen。应用程序可以把文本框,图像及一些简单的相关联的UI组件到表单上,此时表单起容器作用。

·在低层API使用的screen,如一个Canvas或者Graphics对象的子类。

2、Lcdui包

所有的MIDP GUI类都包含在包javax.microedition.lcdui中。该包包含了3个接口和21个类,详见表1和表2。

表 1: lcdui接口

接口描述Choice为用户接口组件定义一个API,该API实现从预定义的选项中的选择CommandListener 用于应用程序检索来自实现过程的高层次事件ItemStateListener 当应用程序需要接收事件(该事件代表了交互项中的内部状态中的变化)时使用
表 2: lcdui类

类 描述Alert一个screen,它显示数据给用户,并在显示下一屏前等待一段时间AlertType 该类指出上面Alert的类型Canvas 这是一个需要进行低层事件处理并为屏幕显示发出图形调用的应用程序的基础类ChoiceGroup 为了放置在表单中的一组可选择的元素Command用来封装某动作的语义信息DateField 一个可编辑组件,用于描述显示在表单上的日历上的日期和时间信息Display用于描述显示管理器和系统的输入设备Displayable可被显示的对象Font 描述字体及其大小的类Form一个screen,其中包含了许多项(图像,文本,文本域,选项组,等)的任意组合Gauge 完成在表单上某个值的条码图显示Graphics该类提供简单的二维几何体着色能力Image存放图像数据的类ImageItem当把图像对象添加到form 或者alert上时,负责其布局控制。Item 它是一个可以添加到Form 或者Alert上的所有组件的基类。List 包含一系列选择的屏幕控件Screen所用高层用户接口类的基类StringItem 该项可以存放字符串TextBox允许用户输入和编辑文本的屏幕控件TextField可以放到表单上去的可编辑文本控件Ticker一种横跨屏幕显示的断续器类型的文本,它可以被依附到除Canvas外的所有screen上。

下图显示其中的主要类及其之间的关系。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

图 4.包中的主要类之间的类关系图

来源:https://www.tulaoshi.com/n/20160219/1599328.html

延伸阅读
标签: Web开发
由于javascript具有动态类型特性,而且XMLHttpRequest在不同浏览器上的实现是兼容的,所以可以用同样的方式访问XMLHttpRequest实例的属性和方法,而不论这个实例创建的方法是什么。这就大大简化了开发过程,而且在javascript中也不必编写特定于浏览器的逻辑。 ------------------------------------------------------------------------...
本文转自 IBM developerWorks 中国网站 EJB 体系结构的历史和目标 本文概述 Enterprise JavaBeans (EJB) 技术,旨在让读者快速理解基本概念。第 1 部分讲述 EJB 技术的历史和某些目标、优点和技术。为了简洁明了,有选择地讲述EJB 技术的一些要害要素。请注重,虽然 EJB 组件依靠于一些基础的 Java 服务(如 Java T...
模拟女友手机软件评测 这年头什么都有山寨的,山寨版KFC到处都是,山寨版手机随机可见,手机软件也频出奇招,甚至也大打了一把山寨牌。一次偶然的机会让小编发现了这款惊天地、泣鬼神,无数宅男齐下载的软件模拟女友手机软件。没错就是它,一款小小的手机软件,怎么可以一时间让那么多的宅男欢欣雀跃呢?不着急,小编这就和你一块寻找答案...
标签: 电脑入门
Debian是Linux系统中的一种,有些人认为Debian的图形界面不好看,那么要如何禁止启动Debian图形界面而现实字符界面呢?下面图老师小编就给大家介绍下Debian禁止图纸界面启动的方法,一起来了解下吧。 装了debian图形界面一段时间后,觉得太笨重了,于是想要禁止启动。 $vim /etc/inittab 系统启动项是/etc/init.d 按照说明用S和K来改变脚...
以前看dansin他们用QtDesigner编写应用程序蛮简单,可是真的没想到,自己要用它写程序的时候竟然折腾了好几天才搞清楚,真后悔当初没有跟他们好好学习一下子。 刚开始需要使用QT编写程序的时候,为了加快学习进度,我就去买了一本关于这个的书,叫做 ,清华大学出版社的,我这里写这本书不是想为这本书打广告,而是想大大的骂一下这个作者!这本书什么都讲...

经验教程

998

收藏

75
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部