深入理解Display类的使用

深入理解Display类的使用

作者:陈跃峰

Email:cqucyf@gmail.com

 

 

 

       熟悉了MIDlet类的使用以后,下面来熟悉一下Display类的使用,这个类也是进行J2ME编程中经常要使用到的类之一。

       Display类有两个最主要的作用:

1、  获得屏幕的属性。例如屏幕是否是彩色的,以及支持的颜色数量等信息。

2、  控制屏幕的显示。例如使屏幕显示某个指定界面或者获得当前的显示界面等。

其中,特别是第二个作用使用的更加频繁。

另外一个需要注意的地方是,每个MIDlet只有一个Display类型的对象,该对象控制该MIDlet程序中所有的显示控制。所以在创建Display对象时,必须指定该Display对象和哪个MIDlet对象对应。

在使用Display提供的功能以前,必须创建一个Display类型的对象,创建该对象的时候只能使用Display类中的静态方法getDisplay方法来进行创建,该方法的完整声明如下:

       public static Display getDisplay(MIDlet m)

使用该方法可以创建一个代表MIDlet类型对象m的Display对象,一般我们可以在MIDlet类的构造方法中创建。例如创建一个MyMIDlet类的该对象,则可以使用如下的代码:

       private Display display;

       public MyMIDlet(){

              display = Display.getDisplay(this);

       }

因为以上代码书写在MyMIDlet类内部,则this关键字就代码MyMIDlet类型的对象。这样就创建了一个代表MyMIDlet的Display对象。

对象创建完毕了以后,就可以使用Display对象提供的功能了。

在MIDP1.0中,Display类提供的功能主要分为两个部分:

1、  获得屏幕的属性

l         isColor——判断屏幕是否是彩色的

l         numColors——如果是彩色手机,则获得支持的颜色数量,如果是黑白手机,则获得支持的灰度等级。

2、  控制屏幕的显示

在手机屏幕上可以直接显示的界面,全部都必须是Displayable的子类。控制显示主要分为两类方法:

 

 

 

l         setCurrent——设置当前显示的界面对象

l         getCurrent——获得当前显示的界面对象

除了以上方法以外,还有一个方法是:

l         callSerially

该方法的作用是使指定的线程对象首先暂停,让系统首先完成屏幕的显示,等屏幕显示完毕以后再使线程继续执行。

       在MIDP2.0中,对于Display类进行了很多的增强,主要在两个方面进行了增强:

1、  屏幕的属性

l         numAlphaLevels——获得设备对于透明度的支持

可以通过该类获得在List、ChoiceGroup和Alert中能够显示的最大(最佳)图片尺寸,有助于在高级用户界面编程中使用恰当的图片。

l         getBestImageHeight——获得设备支持的图片最佳高度

l         getBestImageWidth——获得设备支持的图片最佳宽度

l         getBorderStyle——获得控件的边界格式

l         getColor——获得高级用户界面中的默认颜色

可以获得如下类型的默认颜色

n         COLOR_BACKGROUND——背景

n         COLOR_FOREGROUND——前景

n         COLOR_HIGHLIGHTED_BACKGROUND——高亮时的背景

n         COLOR_HIGHLIGHTED_FOREGROUND——高亮时的前景

n         COLOR_BORDER——边界

n         COLOR_HIGHLIGHTED_BORDER——高亮时的边界

例如获得默认的背景颜色,可以使用如下代码实现:

        int bgColor = display.getColor(Display. COLOR_BACKGROUND);

 

 

 

2、  控制设备

l         flashBacklight——控制手机背景灯的闪烁

l         vibrate——控制手机震动

其他的还有一个很实用的方法,在Form界面中,可以使某个控件获得焦点,可以使用如下方法:

l         setCurrentItem——设置某个控件获得焦点,可以接受输入。

以上详细介绍了Display类提供的各个功能,但是在实际使用过程中,还需要有些别的要求。

例如在实际的手机界面程序设计中,为了增强代码的可读性,经常需要将不同的界面封装成不同的类,然后在界面之间按照程序逻辑的要求进行变换,这样就需要使用到Display对象的setCurrent方法进行切换。而创建Display对象时,必须传递一个MIDlet类型的对象,这样大大限制了创建Display对象。

一般在界面类中,因为界面类不是MIDlet的子类,所以需要获得Display对象有两个方法:

1、  传递MIDlet类型的对象

2、  传递Display类型的对象

下面就以传递Display对象为例来实现在界面类中进行切换。下面的程序为了简单起见,以两个Canvas界面为例来演示实际的传递,高级界面和这个使用完全一样。

MIDlet中的代码实现:

       Display display;

       public MyMIDlet(){

              display = Display.getDisplay(this);

              //创建需要显示的界面对象

              FirstCanvas fc = new FirstCanvas(display);

              //显示界面

              display.setCurrent(fc);

 

 

 

       }

第一个界面类的代码实现:

       public class FirstCanvas extends Canvas{

              Display display;

              public FirstCanvas(Display display){

                     this.display = display;

              }

              /**绘制方法*/

              public void paint(Graphics g){

                     g.drawString(“第一个界面”,30,40,Graphics.TOP | Graphics.LEFT);

              }

              /**事件处理*/

              public void keyPressed(int keyCode){

                     display.setCurrent(new SecondCanvas(display)); //显示下一个界面

              }

       }

第二个界面类的代码实现和上一个类似:

              Display display;

              public SecondCanvas(Display display){

                     this.display = display;

              }

       这里就不再累述了。

       上面的代码演示了如何使用传递Display对象的形式,在界面类中实现切换界面。当然除了该方式以外,需要实现该功能的方式还有很多种,这里只介绍这一种容易理解的实现方式。

       以上内容详细介绍了J2ME编程过程中Display类的实际使用,希望能帮助大家快速熟悉该类的实际使用。因为作者水平有限,不足之处难免,希望大家能积极指正!

 

 

         说明:版权所有,未经允许严禁转载!

 

 

 

 

 

Android Qcom Display学习(零) Linus有一句名言广为人知:Read the fucking source code. 一个模块是从点滴学习积累出来的,不看不学怎么能深入理解,但仅仅「看」也是远远不够的,更多的是思考。display目前还在学习中,补充基础知识,建个目录方便自己查看, 其实目前还是基于底层LCD模块驱动的学习,标题从LCD转变成Display是想后续能衍生到framework层,更多系统的方面。............ 阅读详情

相关推荐

IMU自动校准论文与代码实现A Robust and Easy to Implement Method for IMU Calibration without External Equipments

PART1 摘要 低成本的惯性测量单元会受到系统误差的影响,系统误差由标度因子和轴偏差造成,这会降低位置和姿态估计的精度。 本文提出了一种无需任何外部设备的,鲁棒性强,易于实现的IMU校准方法。 该程序基于多放置方案,再估计传感器偏差的同时,为加速度和陀螺仪三轴的尺度和偏差系数。我们的方法只需要用手移动传感器,并将其放置在一组不同的静态位置(姿态)。 论文描述了一个鲁棒的快速校准协议,...

qq_29313679的博客 5308

java里display方法_Java DisplayManager.getDisplay方法代码示例

import android.hardware.display.DisplayManager; //导入方法依赖的package包/类public TvViewUiManager(Context context, TunableTvView tvView, TunableTvView pipView,FrameLayout contentView, TvOptionsManager tvOptio...

weixin_28738397的博客 1346

手把手教你用Simulink搭建PMSM FOC控制模型(附完整仿真文件下载)

本文手把手教你使用Simulink搭建完整的永磁同步电机(PMSM)磁场定向控制(FOC)仿真模型。内容涵盖从电机与逆变器建模、核心的坐标变换(Clark/Park变换)实现、电流环与速度环PID整定,到SVPWM调制与系统集成调试的全过程,并提供关键参数设置与实用调试技巧,帮助工程师快速掌握FOC的工程实现。

silver的专栏 863

kotlin 中获得display

getDisplayId Display Context

dl6655的专栏 1675

保姆级教程:用Adams/Car和Simulink搞定你的第一个整车联合仿真(附模型文件)

本文提供了一份详尽的Adams/Car与Simulink联合仿真教程,涵盖从环境配置到模型导出的全流程。通过实战案例解析,帮助工程师快速掌握多体动力学仿真与控制算法开发的集成技术,特别适合汽车工程领域的初学者。文章还包含常见问题解决方案和性能优化建议,助您高效完成整车联合仿真项目。

weixin_29663861的博客 338

unity转微信小游戏:UI大小设置

unity转微信小游戏:UI大小设置

会潜水的小火龙的博客 3279

Web前端 学习知识点总结(四)之display 和 float

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录系列文章目录前言一、display1.页面的布局2.display的内的属性3.hover隐藏案例二、使用步骤1.引入库2.读入数据总结 前言 本文来总结一下display和float,两者为了页面的合理布局而设计的。 提示:以下是本篇文章正文内容,下面案例可供参考 一、display

weixin_45118229的博客 1088

字节跳动高频111道核心前端面试题解析,web开发增强

但是本人觉得看书也很必要,可以节省很多时间,常见的javascript的书,例如:javascript的高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。内容包括html,css,JavaScript,ES6,计算机网络,浏览器,工程化,模块化,Node.js,框架,数据结构,性能优化,项目等等。自定义指令(v-check、v-focus)的方法有哪些?v-model是什么?

2401_84094620的博客 1200

C++类的使用2学习笔记

类的第二个练习例子: 类的声明 #ifndef POINT_H_ #define POINT_H_ #include using namespace std; class Point{ private: int a,b; public: void Setab(int m,int n); void Move(int m,int n); void

宇宙精英 734

4D毫米波雷达天线设计

多种天线布局方案介绍、天线设计要点介绍

5736

KRC文件——编程中的重要文件

KRC文件是指KUKA机器人控制器(KUKA Robot Controller)所使用的文件格式。KUKA是一家知名的机器人制造商,其机器人控制器通过KRC文件来管理和执行机器人程序。KRC文件包含了机器人的运动指令、逻辑控制、传感器数据等信息,以及与机器人相关的配置参数。这些文件通常使用KRL(KUKA Robot Language)编写,是一种特定的编程语言。KRC文件具有扩展名为.krc的格式,可以在KUKA机器人控制器上直接加载和执行。

TechProX的博客 2972

2015.9.5

实现用Java显示一个数字时钟 思路: 1。它要有一个Display用来显示 2。Display由两块数字组成: 两块数字都有些相似的地方: 都有一个数值value value都有一个上限limit 都要递增的动作increase 都要得到递增后结果getValue() 代码: package Clock; public class Display { pr

秋风扫落叶 182

Megatron-LM从头训练大语言模型:并行策略图示【Tensor并行、Pipeline并行、Data并行、Sequence并行、virtual_pipeline并行、Context并行】

节点包含的层每GPU的参数内存每GPU的激活内存节点0Stage 0层1-1212层参数/2 (TP切分)8k序列激活 (CP切分)节点1Stage 1层13-2412层参数/2 (TP切分)8k序列激活 (CP切分)节点2Stage 2层25-3612层参数/2 (TP切分)8k序列激活 (CP切分)节点3Stage 3层37-4812层参数/2 (TP切分)8k序列激活 (CP切分)负载均衡:每个节点处理相同数量的层(12层)内存优化。

u013250861的博客 286

运用HTML,CSS,JS 实现的几个网页特效

通常我们在浏览网页的时候,会看到一些不知道怎样实现的特效,比如三角形图标、块级标签占一行、点击一个a标签后会展示一个下拉块等,下面就由小编来说一说怎样实现它们的吧!

坚持不懈的大白的博客 2696

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

带你了解前端之CSS层叠样式表

详细介绍了CSS层叠样式表 快速入门

主要发布一些日常学习代码及理解 1204

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

CSS浮动及解决父级边框塌陷

CSS浮动 CSS (Cascading Style Sheet ) 1、浮动的介绍 1.1 块元素 h1-h6 p、div、列表... ... 1.2 行元素 span、a、img、strong... ... 行元素可以包含在块元素中,反之则不行。 1.3 块元素和行元素互相转换 div{ width: 100px; height: 100px; border: 1px solid red; display: inline; } spa

zhangsann_6的博客 188

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

CSS display使用

今天我们来分析一下display的一些用法,display样式在我们整个CSS设置中,非常重要,掌握好display,才能有效的解决CSS布局的问题,在理解display之前,我们先了解两个概念:块元素和行内元素。 1、基本概念  块级元素(block element)   其就是以块状呈现,具有块的基本特征,如高度、宽度等等,其主要有以下几个特点: 在新行上开始;所以它们都是独占

ggabcda的博客 2764

display的32种写法

转自:display的32种写法 你知道『回』字有四种写法,但你知道display有32种写法吗?今天我们一一道来,让你一次性完全掌握display,从此再也不用对它发愁。 从大的分类来讲,display的32种写法可以分为6个大类,再加上1个全局类,一共是7大类 1. 外部值 所谓外部值,就是说这些值只会直接影响一个元素的外部表现,而不影响元素里面的儿子级孙子级元素的表现。 1.1 dis...

lanwuying的专栏 6143

深入理解CSS display属性

display属性在网页布局中非常常见,但经常用到的仅仅是block、inline-block、inline和none等寥寥几个属性值,本文将详细介绍display属性的各个方面

七十多岁的人了、 677

深入理解CSS的display属性

在布局中,display属性是最重要的CSS属性之一。其最常见的属性值有block,inline,none,table以及inline-block。最近的新宠为flex,因为它是专门为布局创建的display属性。新出现的grid(最近仍比较活跃)是另外一个指定的布局属性,其很快就会广泛被使用。 这篇文章比我预期的要长很多,你可以选择性进行阅读,但是我更希望你可以静下心来阅读整篇文章。 表内容...

DLQFHL的博客 2178

JavaScript教程:深入理解CSS display属性

在网页开发中,CSS的`display`属性是最基础也是最重要的属性之一。本文将全面解析`display`属性的各种取值及其应用场景,帮助开发者更好地控制页面元素的布局方式。 ## display属性基础 `display`属性定义了元素在页面上的显示方式,决定了元素如何参与文档流布局。虽然常用的值只有几个,但理解所有可能的值对于掌握CSS布局至关重要。 ## 常用display值解析 #

gitblog_00440的博客 596
上一篇: J2ME中的时区(TimeZone)类使用
下一篇: 思考:关于Blog中文章的版权问题
java2000_test
博客等级 码龄19年 10粉丝 320原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值