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

3.2 Display與Displayable

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

3.2.1 Display類及其常用方法

Display:javax.microedition.lcdui.Display

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

表3-3 Display類的常用方法

Display對象是MIDP程序的中心控制者,通常通過在MIDlet實例中調用Display類的getDisplay()方法獲取。

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

在每一個MIDP應用程序中Display對象是唯一的,this代表的是本類即MIDlet對象。

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

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

第一種方法是設置displayable對象為當前顯示對象,第二種方法是設置alert為當前顯示對象,當alert顯示結束后顯示displayable對象。

除了顯示屏幕對象外,還可以通過Display對象獲取一些設備信息,代碼參見【例3-1】。

【例3-1】 獲取Display對象信息。

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("當前顯示屏幕對象"+disp.getCurrent());
        System.out.println("---------------------------------");
        System.out.println("是否支持彩色"+disp.isColor());
        System.out.println("支持彩色的數目"+disp.numColors());
        System.out.println("支持的透明層數"+disp.numAlphaLevels());
        System.out.println("設備的背景顏色"+disp.getColor(Display.COLOR_ BACKGROUND));
        System.out.println("---------------------------------");
        System.out.println("是否支持震動效果"+disp.vibrate(100));
        System.out.println("是否支持背景光顏色"+disp.flashBacklight(100));
        System.out.println("---------------------------------");
        System.out.println("當前筆觸"+disp.getBorderStyle(false));
    }
    protected void destroyApp(boolean arg0) throws MIDletStateChange Exception {        }
    protected void pauseApp() { }
    protected void startApp() throws MIDletStateChangeException {       }
}

程序的執行結果如下:

當前顯示屏幕對象null
---------------------------------
是否支持彩色true
支持彩色的數目4096
支持的透明層數256
設備的背景顏色16777215
---------------------------------
是否支持震動效果false
是否支持背景光顏色false
---------------------------------
當前筆觸1

注意:當使用不同的手機模擬器時,執行的結果是不一樣的。

3.2.2 Display類與Displayable類之間的關系

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

表3-4 Displayable類的常用方法

Displayable是一個抽象類,主要是通過它的兩個子類Canvas和Screen來實現界面的顯示的,其中Screen為高級屏幕類,封裝了完整的用戶界面組件。下面是一個運用Display對象對高級屏幕類進行顯示的實例,代碼參見【例3-2】。

【例3-2】 運用Display對象顯示高級屏幕類對象。

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("歡迎來到手機世界");
    }
    protected void destroyApp(boolean arg0) throws MIDletStateChange Exception {        }
    protected void pauseApp() { }
    protected void startApp() throws MIDletStateChangeException {
    disp.setCurrent(f);
    }
}

程序的執行結果如圖3-3所示。

圖3-3 程序執行結果

注意:在同一時刻應用程序最多只有一個Displayable對象被顯示在屏幕上,如果多次調用setCurrent()方法,最后顯示的對象將覆蓋之前顯示的對象。

主站蜘蛛池模板: 宾阳县| 定州市| 海南省| 和顺县| 阿瓦提县| 呼图壁县| 郴州市| 海林市| 色达县| 嵊州市| 元朗区| 保靖县| 汽车| 那曲县| 五大连池市| 禄丰县| 平度市| 手游| 聊城市| 麦盖提县| 滁州市| 潮安县| 贵定县| 呈贡县| 甘孜县| 佛坪县| 古交市| 台安县| 霍林郭勒市| 濮阳县| 万年县| 安宁市| 田东县| 仁化县| 青州市| 阳信县| 丹阳市| 延寿县| 交城县| 镇巴县| 信阳市|