分享
 
 
 

深入理解Display类的使用

王朝java/jsp·作者佚名  2006-02-01
窄屏简体版  字體: |||超大  

深入理解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{

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类的实际使用,希望能帮助大家快速熟悉该类的实际使用。因为作者水平有限,不足之处难免,希望大家能积极指正!

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有