官术网_书友最值得收藏!

3.2 Display與Displayable

MIDP中使用Display類對(duì)用戶界面進(jìn)行管理,與應(yīng)用程序進(jìn)行交互,而Displayable類及其子類對(duì)象則是可顯示的用戶界面,也就是Display類管理的對(duì)象。

3.2.1 Display類及其常用方法

Display:javax.microedition.lcdui.Display

Display類是顯示屏幕和輸入設(shè)備的管理對(duì)象,常用來(lái)獲取設(shè)備的屬性及顯示屏幕對(duì)象,是每個(gè)MIDP程序不可或缺的對(duì)象,Display類的常用方法如表3-3所示。

表3-3 Display類的常用方法

Display對(duì)象是MIDP程序的中心控制者,通常通過(guò)在MIDlet實(shí)例中調(diào)用Display類的getDisplay()方法獲取。

Display disp;
disp=Display.getDisplay(this);

在每一個(gè)MIDP應(yīng)用程序中Display對(duì)象是唯一的,this代表的是本類即MIDlet對(duì)象。

獲取Display對(duì)象后就可以通過(guò)setCurrent()方法設(shè)置顯示的屏幕對(duì)象。

disp.setCurrent(displayable);
disp.setCurrent(alert,displayable);

第一種方法是設(shè)置displayable對(duì)象為當(dāng)前顯示對(duì)象,第二種方法是設(shè)置alert為當(dāng)前顯示對(duì)象,當(dāng)alert顯示結(jié)束后顯示displayable對(duì)象。

除了顯示屏幕對(duì)象外,還可以通過(guò)Display對(duì)象獲取一些設(shè)備信息,代碼參見(jiàn)【例3-1】。

【例3-1】 獲取Display對(duì)象信息。

import javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class mainMidlet extends MIDlet {
    Display disp;
    public mainMidlet() {
        disp=Display.getDisplay(this);
        System.out.println("當(dāng)前顯示屏幕對(duì)象"+disp.getCurrent());
        System.out.println("---------------------------------");
        System.out.println("是否支持彩色"+disp.isColor());
        System.out.println("支持彩色的數(shù)目"+disp.numColors());
        System.out.println("支持的透明層數(shù)"+disp.numAlphaLevels());
        System.out.println("設(shè)備的背景顏色"+disp.getColor(Display.COLOR_ BACKGROUND));
        System.out.println("---------------------------------");
        System.out.println("是否支持震動(dòng)效果"+disp.vibrate(100));
        System.out.println("是否支持背景光顏色"+disp.flashBacklight(100));
        System.out.println("---------------------------------");
        System.out.println("當(dāng)前筆觸"+disp.getBorderStyle(false));
    }
    protected void destroyApp(boolean arg0) throws MIDletStateChange Exception {        }
    protected void pauseApp() { }
    protected void startApp() throws MIDletStateChangeException {       }
}

程序的執(zhí)行結(jié)果如下:

當(dāng)前顯示屏幕對(duì)象null
---------------------------------
是否支持彩色true
支持彩色的數(shù)目4096
支持的透明層數(shù)256
設(shè)備的背景顏色16777215
---------------------------------
是否支持震動(dòng)效果false
是否支持背景光顏色false
---------------------------------
當(dāng)前筆觸1

注意:當(dāng)使用不同的手機(jī)模擬器時(shí),執(zhí)行的結(jié)果是不一樣的。

3.2.2 Display類與Displayable類之間的關(guān)系

如果說(shuō)Display是MIDP程序的管理者,那么Displayable就是被管理的對(duì)象,通過(guò)對(duì)不同的Displayable對(duì)象進(jìn)行操作就改變了應(yīng)用程序的界面顯示和用戶交互。Displayable類本身是抽象類,不能直接實(shí)例化,具體的應(yīng)用是通過(guò)其子類來(lái)完成的。Displayable類主要是提供一些常用的方法如表3-4所示。

表3-4 Displayable類的常用方法

Displayable是一個(gè)抽象類,主要是通過(guò)它的兩個(gè)子類Canvas和Screen來(lái)實(shí)現(xiàn)界面的顯示的,其中Screen為高級(jí)屏幕類,封裝了完整的用戶界面組件。下面是一個(gè)運(yùn)用Display對(duì)象對(duì)高級(jí)屏幕類進(jìn)行顯示的實(shí)例,代碼參見(jiàn)【例3-2】。

【例3-2】 運(yùn)用Display對(duì)象顯示高級(jí)屏幕類對(duì)象。

import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class mainMidlet extends MIDlet {
    Display disp;
    Form f;
    public mainMidlet() {
        disp=Display.getDisplay(this);
        f=new Form("歡迎來(lái)到手機(jī)世界");
    }
    protected void destroyApp(boolean arg0) throws MIDletStateChange Exception {        }
    protected void pauseApp() { }
    protected void startApp() throws MIDletStateChangeException {
    disp.setCurrent(f);
    }
}

程序的執(zhí)行結(jié)果如圖3-3所示。

圖3-3 程序執(zhí)行結(jié)果

注意:在同一時(shí)刻應(yīng)用程序最多只有一個(gè)Displayable對(duì)象被顯示在屏幕上,如果多次調(diào)用setCurrent()方法,最后顯示的對(duì)象將覆蓋之前顯示的對(duì)象。

主站蜘蛛池模板: 松滋市| 罗源县| 安阳市| 梁平县| 乐山市| 蓝山县| 娱乐| 三门峡市| 永和县| 明星| 乐安县| 永善县| 杭锦旗| 临海市| 吴川市| 青铜峡市| 开化县| 革吉县| 阿克苏市| 商丘市| 毕节市| 亚东县| 双桥区| 马山县| 云安县| 沈丘县| 厦门市| 石城县| 巨野县| 永春县| 扎鲁特旗| 阿拉善左旗| 滁州市| 宁德市| 乌拉特中旗| 铁岭县| 大港区| 仙居县| 镇沅| 荆门市| 翁牛特旗|