深入理解Display类的使用

深入理解Display类的使用

作者:陈跃峰

Emailcqucyf@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类型对象mDisplay对象,一般我们可以在MIDlet类的构造方法中创建。例如创建一个MyMIDlet类的该对象,则可以使用如下的代码:

       private Display display;

       public MyMIDlet(){

              display = Display.getDisplay(this);

       }

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

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

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

1、  获得屏幕的属性

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

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

2、  控制屏幕的显示

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

 

 

 

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

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

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

l         callSerially

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

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

1、  屏幕的属性

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

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

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层,更多系统的方面。............ 阅读详情

相关推荐

基于ArduPilot的旋翼式无人机飞行器开发系列(二,学习路线)

一,热爱 作为一名耿直的技术男,在这里我只想说一句,热爱是可持续学习的第一要素,也只有热爱才能让你坚持到最后。 至于最后能得到什么,只有你自己知道。常说书中自有颜如玉,书中自有黄金屋。如果你是为了颜如玉,我相信大多数颜如玉做不了你的红颜知己。如果是为了黄金屋,当你持续投入时间和金钱却看不到回报的时候,相信退堂鼓早已隆隆作响。 我给自己的信条就是为当下努力工作,为将来持续学习。当前飞控行业并没有爆发,如果想赚块钱,去互联网汽车,去VR/AR吧,去元宇宙吧。 那么我热爱...

从0到1,突破自己 1611

javadisplay方法_Java DisplayManager.getDisplay方法代码示例

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

weixin_28738397的博客 1344

【Unity】【WebRTC】如何用Unity而不是浏览器接收远程画面

之前几篇我们讨论了如何设置信令服务器,如何发送画面给远端以及如何用浏览器查看同步画面,今天来讨论如何实现Unity内部接收画面。看本篇之前请先看过之前将web服务器设置和基本远程画面功能的几篇博文。在Unity编辑器中打开一个示例项目,点击BroadCast按钮。4. 再点击Receiver按钮,Start。Build一个示例项目,并运行这个项目。启动Web.app。

每日出拳老爷子的博客 1687

kotlin 中获得display

getDisplayId Display Context

dl6655的专栏 1667

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

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

weixin_45118229的博客 1084

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

宇宙精英 733

2015.9.5

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

秋风扫落叶 180

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

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

坚持不懈的大白的博客 2675

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

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

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

2024css面试题理论题必修课经典面试题,html实体字符

一个好的心态和一个坚持的心很重要,很多冲着高薪的人想学习前端,但是能学到最后的没有几个,遇到困难就放弃了,这种人到处都是,就是因为有的东西难,所以他的回报才很大,我们评判一个前端开发者是什么水平,就是他解决问题的能力有多强。分享一些简单的前端面试题以及学习路线给大家,狂戳这里即可免费领取自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

2301_76379381的博客 860

PyVirtualDisplay Display终极指南:10个核心API方法详细解析

PyVirtualDisplay是一个强大的Python虚拟显示库,它为Xvfb、Xephyr和Xvnc提供了简洁的Python包装器。无论你是进行自动化测试、GUI应用开发还是需要无头环境运行图形程序,Display都是你不可或缺的工具。本文将深入解析Display的所有API方法,帮助你掌握这个强大的虚拟显示工具。 ## 🔍 Display概述 Display是PyVirtual

gitblog_00577的博客 382

CSS display使用

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

ggabcda的博客 2761

display的32种写法

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

lanwuying的专栏 6126

深入理解CSS display属性

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

七十多岁的人了、 675

深入理解CSS的display属性

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

DLQFHL的博客 2158

图像检测:电力巡检智能缺陷检测数据集.7z

详细介绍见博客 https://blog.csdn.net/kobeyu652453/article/details/117398990数据集

上一篇: J2ME中的时区(TimeZone)类使用
下一篇: 思考:关于Blog中文章的版权问题
java2000_test
博客等级 码龄19年 9粉丝 320原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值