2 J2ME用戶界面_第1頁
2 J2ME用戶界面_第2頁
2 J2ME用戶界面_第3頁
2 J2ME用戶界面_第4頁
2 J2ME用戶界面_第5頁
已閱讀5頁,還剩46頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、J2ME用戶界面,陳旭東 xudong_,2020年7月29日,2,內(nèi)容,用戶界面庫的體系結(jié)構(gòu) Display類 事件處理 Alert類 List 類 - 列表 TextBox 類 - 文本框 Form - 表單,用戶界面庫的體系結(jié)構(gòu),javax.microedition.lcdui,2020年7月29日,3,用戶界面庫,Screen類是高級圖形用戶界面的父類,使用該類實(shí)現(xiàn)的用戶界面無需修改就可以在所有支持Java的手機(jī)上顯示。 Screen類的四個子類分別是TextBox,List,Alert和Form。 TextBox,List,Alert是預(yù)定義類型的組件。 Form類是開放的容器類型,

2、可以容納Item類型的組件以便構(gòu)成復(fù)雜的圖形用戶界面,2020年7月29日,4,Display類,獲取Display對象 利用Display類所提供的靜態(tài)方法getDisplay() display = Disp lay.getDisplay(this); MIDP中規(guī)定每個MIDlet程序只能擁有一個Display對象,2020年7月29日,5,Display對象,一個Display對象卻可以擁有多個在屏幕中顯示的Displayable對象,即Screen對象和Canvas對象 當(dāng)前的Displayable指的是當(dāng)應(yīng)用在前臺時,用戶所見的那個Displayable對象。 在MIDlet程序中

3、對Display實(shí)例所做的最多的操作應(yīng)該是設(shè)置當(dāng)前的Displayable對象。 Display.setCurrent();,2020年7月29日,6,實(shí)例,在界面類中實(shí)現(xiàn)切換界面 UIConvert.java FirstScreen.java SecondScreen.java,2020年7月29日,7,事件處理,在MIDP中,事件處理分為低級事件處理和高級事件處理 低級事件主要指機(jī)器上的按鈕被按下或觸摸屏被觸動時所產(chǎn)生的事件 高級事件處理是指通過類似菜單命令的方式來接收用戶輸入 當(dāng)用戶按下手機(jī)的功能鍵時,屏幕上應(yīng)該有命令菜單彈出來,然后由用戶選擇需要執(zhí)行的命令,2020年7月29日,8,事

4、件處理原理,事件處理原理就是回調(diào)機(jī)制 事件監(jiān)聽接口 當(dāng)用戶觸發(fā)事件發(fā)生的時候,事件監(jiān)聽接口對應(yīng)方法會被調(diào)用,來處理相關(guān)的操作,2020年7月29日,9,命令(Command),一個Command實(shí)際上就是一個用戶按下設(shè)備的某個按鈕所產(chǎn)生動作的信息的入口或用戶動作的觸發(fā)器。 命令信息被保存在一個Command對象中。一個Command對象包含三部分信息: label(命令標(biāo)簽) type(命令類型) priority(命令優(yōu)先級),2020年7月29日,10,創(chuàng)建Command對象,創(chuàng)建Command對象 new Command(退出,Command.EXIT,1) 其中,第一個參數(shù)是命令標(biāo)簽,

5、第二個參數(shù)是命令類型,第三個參數(shù)是該命令的優(yōu)先級(1代表優(yōu)先級最高) 命令類型可以是下列8個值之一 Command.BACK:返回前一屏幕; Command.CANCEL:取消當(dāng)前正在進(jìn)行的工作; Command.EXIT:退出應(yīng)用程序; Command.HELP:請求在線幫助; Command.ITEM:選擇命令是當(dāng)前屏幕中的某一項(xiàng); Command.OK:確定當(dāng)前正在進(jìn)行的動作; Command.SCREEN:應(yīng)用到當(dāng)前屏幕的命令; Command.STOP:中斷當(dāng)前正在運(yùn)行的動作。,2020年7月29日,11,建立Command對象關(guān)聯(lián),Command對象只有與具體的Displayabl

6、e對象以及執(zhí)行代碼進(jìn)行關(guān)聯(lián)才能發(fā)揮作用。 所謂關(guān)聯(lián)是指將Command加入到屏幕顯示中 使用Displayable的addCommand()方法。 這樣就可以通過按鈕、菜單或其他合適的機(jī)制進(jìn)行用戶界面或應(yīng)用程序行為的控制 當(dāng)用戶按下與Command相對應(yīng)的按鈕時,一個觸發(fā)事件就會產(chǎn)生。為了使應(yīng)用程序能夠接收到該事件,必須在Displayable上注冊一個命令監(jiān)聽器CommandListener,2020年7月29日,12,CommandListener接口,CommandListener接口只定義了一個事件處理方法 void commandAction(Command c, Displayab

7、le d) 如用戶按下了一個Command,事件監(jiān)聽接口CommandListener對應(yīng)方法commandAction()會被調(diào)用,來處理相關(guān)的操作,2020年7月29日,13,Alert類,在MIDP中,模式對話框稱為提醒(Alert),它主要用于在屏幕上向用戶顯示關(guān)于異常情況或錯誤的信息。 Alert類的構(gòu)造方法 public Alert(String title) public Alert(String title,String alertText, Image alertImage, AlertType alertType) 創(chuàng)建一個alert時,會有一個計(jì)時器 ,使用默認(rèn)的time

8、out值 getDefaultTimeout( )方法 setTimeout()方法,以毫秒為單位,2020年7月29日,14,Alert對象的類型,Alert對象的類型有5種 AlertType.ALARM:警報類型; AlertType.CONFIRMATION:警告類型; AlertType.ERROR:錯誤類型; AlertType.INFO:信息提示類型; AlertType.WARNING:警告類型。,2020年7月29日,15,實(shí)例,AlertDemo.java,2020年7月29日,16,List 類 - 列表,列表(List)類用于顯示一系列的字符串和可選的圖像。用戶可以在列

9、表中移動并選擇一個或多個選項(xiàng),然后通過觸發(fā)一個命令來完成相應(yīng)的操作。 List類構(gòu)造方法如下。 public List(String title,int listType) public List(String title, int listType, String stringElements, Image imageElements),2020年7月29日,17,列表類型,三種類型列表可以選擇:IMPLICIT, EXCLUSIVE和MULTIPLE。 可以通過使用Choice接口提供的常數(shù)來指定 Choice.EXCLUSIVE(單選)類型的list Choice.IMPLICIT(隱含

10、式菜單)類型的list Choice.MULTIPLE(多選)類型的list 下面的語句生成一個EXCLUSIVE類型的list,標(biāo)題是 Exclusive的空列表。 List list = new List(Exclusive, Choice.EXCLUSIVE);,2020年7月29日,18,列表類型,2020年7月29日,19,圖2-4 單選模式的List,圖2-5 隱含模式的List,圖2-6 多選模式的List,List對象操作,List對象可進(jìn)行append(追加)、insert(插入)、set(設(shè)置)、delete(刪除)、檢索等操作 public int append(Stri

11、ng stringPart,Image imagePart) public void insert(int elementNum,String stringPart,Image imagePart) public void set(int elementNum,String stringPart,Image imagePart) public void delete(int elementNum) public String getString(int index); public Image getImage(int index); public int getSelectedIndex(

12、) public int getSelectedFlags(boolean selectedArray_return),2020年7月29日,20,List類使用示例,ListDemo.java,2020年7月29日,21,TextBox 類 - 文本框,文本框類TextBox是顯示給用戶的,可以用于輸入小于指定長度的文本的界面控件。TextBox是一個容器類型的對象。 構(gòu)造方法如下。 TextBox text = new TextBox(String title, String text, int maxSize, int constraints),2020年7月29日,22,輸入數(shù)據(jù)的約束

13、,構(gòu)造器參數(shù)constraints是對于輸入數(shù)據(jù)的一組約束,其值可以是下列6個值之一。 TextField.ANY:允許輸入任何字符或數(shù)字; TextField.EMAILADDR:允許輸入電子郵件地址; TextField.NUMERIC:只允許輸入數(shù)字; TextField.PHONENUMBER:只允許輸入電話號碼的格式; TextField.URL:允許輸入URL形式的字符串; TextField.DECIMAL:輸入內(nèi)可以通過Double.valueOf()來轉(zhuǎn)換。,2020年7月29日,23,TextBox方法,存取、刪除、插入、替換等操作 public void setStrin

14、g(String text) public String getString() public void setConstraints(int constraints) public int getConstraints() public void delete(int offset, int length); public void insert(char data, int offset, int length, int position); public void insert(String src, int position); public void setChars(char da

15、ta, int offset, int length);,2020年7月29日,24,TextBox類使用示例,TextBoxDemo.java,2020年7月29日,25,Form - 表單,表單(Form)是一個可以放置一組子項(xiàng)(Item)的容器類型,其子項(xiàng)都是獨(dú)立的用戶接口組件,包括只讀的和可編輯的文本框、圖像、日期域、gauge以及選項(xiàng)組組件等抽象類Item 的子類對象 Form對象負(fù)責(zé)安排子項(xiàng)顯示的具體內(nèi)容,如位置、大小等。 通常Form對象與一個列表一樣從頂?shù)降装才潘母髯禹?xiàng)。,2020年7月29日,26,Item類及組件,2020年7月29日,27,Form類的構(gòu)造,For

16、m類的構(gòu)造方法如下: public Form(String title); public Form(String title, Item items); 用戶可以表單中的各個項(xiàng)可以進(jìn)行編輯操作,如插入,添加和刪除。,2020年7月29日,28,Spacer,Spacer是專門用來在Form上邊加入一些空白間隔。它不能與用戶交互。 構(gòu)造方法如下: new Spacer(int minWidth, int minHeight); 第一個參數(shù)是空白間隔的寬度;第二個參數(shù)是空白間隔的高度。 Spacer類使用示例:SpacerDemo.java,2020年7月29日,29,CustomItem,定制項(xiàng)

17、目(CustomItem)可以創(chuàng)立自己的窗體項(xiàng)目。CustomItem是一個介于高級和低級之間的用戶界面,通常稱它為增強(qiáng)型圖形用戶界面。 可以添加到Form中,且可以通過實(shí)現(xiàn)一系列的抽象方法來繪制自己,這樣就可以對用戶交互進(jìn)行細(xì)粒度的控制,并實(shí)現(xiàn)一個可以適應(yīng)現(xiàn)有的窗體框架,符合設(shè)備本身尺寸的用戶界面。,2020年7月29日,30,CustomItem類,CustomItem類的構(gòu)造方法 protected CustomItem(String label) 參數(shù)label是CustomItem名稱。 CustomItem 類定義有如下5個必須實(shí)現(xiàn)的抽象方法 protected abstract

18、int getMinContentHeight()/返回最小高度 protected abstract int getMinContentWidth()/返回最小寬度 protected abstract int getPrefContentWidth(int height)/ 恢復(fù)寬度 protected abstract int getPrefContentHeight(int width)/ 恢復(fù)高度 protected abstract void paint(Graphics g,int w,int h) /paint() 方法可以控制項(xiàng)目的外觀。,2020年7月29日,31,Cust

19、omItem類,CustomItem的一個重要特性是Form內(nèi)部的遍歷(traversal) protected boolean traverse(int dir, int viewportWidth, int viewportHeight, int visRect_inout) 當(dāng)用戶按下能夠引起項(xiàng)目接收焦點(diǎn)的導(dǎo)航鍵時(通常是箭頭鍵),就調(diào)用定制項(xiàng)目的 traverse方法。如果方法返回 true,那么用戶下次按下導(dǎo)航鍵時,還會調(diào)用這個方法,循環(huán)往復(fù),直到方法返回 false 為止,2020年7月29日,32,CustomItem類,方向按鍵 Canvas.UP:向上鍵; Canvas.DO

20、WN:向下鍵; Canvas.LEFT:向左鍵; Canvas.RIGHT:向右鍵; CustomItem.NONE:空值,表示是一些與平臺相關(guān)的事件,例如改變窗體大小,會使項(xiàng)目獲得焦點(diǎn) CustomItem類使用示例: CustomItemDemo.java,2020年7月29日,33,ImageItem,圖像(ImageItem)類用于在Form內(nèi)顯示一幅圖像 ImageItem類的構(gòu)造方法如下 public ImageItem(String label, Image img, int layout, String altText) public ImageItem(String labe

21、l, Image image, int layout, String altText, int appearanceMode),2020年7月29日,34,ImageItem,外觀類型( appearanceMode)可以是3個值之一。 ImageItem.PLAIN,用于非交互的圖像的顯示; ImageItem.BUTTON,以按鈕的外觀顯示圖像; ImageItem.HYPERLINK,以超級鏈的外觀顯示圖像。,2020年7月29日,35,ImageItem,等校線( layout )是用來指定圖像顯示時所對齊的方向,其值可以是下列6個值之一。 ImageItem.LAYOUT_CENTE

22、R:圖像應(yīng)該顯示在屏幕的垂直中部; ImageItem.LAYOUT_DEFAULT:圖像應(yīng)該從屏幕的左上角為起點(diǎn)。默認(rèn)值; ImageItem.LAYOUT_LEFT:圖像應(yīng)該顯示在屏幕的左側(cè); ImageItem.LAYOUT_RIGHT:圖像應(yīng)該顯示在屏幕的右側(cè); ImageItem.LAYOUT_NEWLINE_BEFORE:圖像繪制前先換行; ImageItem.LAYOUT_NEWLINE_AFTER:圖像繪制完畢后應(yīng)換行。,2020年7月29日,36,ImageItem方法,設(shè)定或獲取ImageItem 對象的等校線 public String getAltText() publ

23、ic void setAltText(String text) 設(shè)定或獲取ImageItem 對象所封裝的Image對象 public Image getImage() public void setImage(Image img) 獲取ImageItem 對象所選用的外觀 public int getAppearanceMode() ImageItem類使用示例: ImageItemDemo.java,2020年7月29日,37,StringItem,字符串(StringItem)類的作用就是在Form上顯示一個字符串,配合不同的外觀類型,StringItem可以用按鈕或超級鏈接外觀呈現(xiàn) 構(gòu)

24、造方法如下 public StringItem(String label, String text) public StringItem(String label, String text, int appearanceMode),2020年7月29日,38,StringItem,外觀類型( appearanceMode)的可選值有 StringItem.PLAIN,用于非交互的文本的顯示; StringItem.BUTTON,以按鈕的外觀顯示文本; StringItem.HYPERLINK,以超級鏈的外觀顯示文本。,2020年7月29日,39,StringItem 方法,改變或讀取Strin

25、gItem 對象的文本內(nèi)容 public void setText(String text) public String getText() 獲取StringItem 對象所選用的外觀 public int getAppearanceMode() 改變或讀取StringItem 對象所用字型 public void setFont(Font font) public Font getFont() StringItem類使用示例: StringItemDemo.java,2020年7月29日,40,TextField,文本域(TextField)類在定義與用法上與TextBox類非常相似。它們之

26、間的不同之處在于。 TextBox是多行的,而TextField是單行的; TextBox是容器類型的對象,與Form地位平等,而TextField是Form的子類,它只能夠被容器包含,不能夠單獨(dú)顯示。 TextField類的構(gòu)造方法如下。 public TextField(String label, String text, int maxSize, int constraints),2020年7月29日,41,TextField,文本域類型(constraints)的可選的值有:TextField.PASSWORD、TextField.EMAILADDR、TextField.URL、Tex

27、tField.NUMERIC、TextField.DECIMAL、TextField.PHONENUMBER等。 TextField類使用示例: TextFieldDemo.java,2020年7月29日,42,DateField,日期域(DataField)類的目的是讓用戶能夠方便地輸入日期或時間。該類是可編輯的,通常是通過系統(tǒng)顯示的日歷或其它合適的對話框,輸入時間或日期。DateField對象的作用與Windows控制面板中的時間和日期設(shè)置程序有點(diǎn)近似。 DateField對象和TextField對象一樣不能單獨(dú)顯示,必須作為容器對象的子項(xiàng)目來顯示。 DateField類的構(gòu)造方法如下。

28、public DateField(String label, int mode) public DateField(String label, int mode, TimeZone timeZone),2020年7月29日,43,DateField,參數(shù)mode為輸入模式,其取值為下面3個可能取值 DataField.DATE,此模式僅限于日期; DataField.DATE_TIME,此模式包括了日期和時間; DataField.TIME,此模式僅限于時間。 參數(shù)timeZone是一個java.util.TimeZone對象,2020年7月29日,44,DateField方法,改變或讀取Da

29、taField的輸入模式 public int getInputMode() public void setInputMode(int mode) 設(shè)置或讀取用戶指定的時間 public void setDate(Date date) public Date getDate() 需注意的是,Date對象必須與java.util.Calendar對象一起使用 DateField類使用示例: DateFieldDemo.java,2020年7月29日,45,Gauge,滑桿(Gauge)類用于顯示某個范圍內(nèi)的值,通常使用滑桿圖來表示。其顯示范圍的最小值是0,最大值由程序員根據(jù)不同的需要進(jìn)行設(shè)定。設(shè)

30、定之后,當(dāng)前值就會始終處于最小值和最大值之間。 Gauge的最大用處就是用作進(jìn)度顯示使用。 Gauge 類構(gòu)造方法如下: public Gauge(String label, boolean interactive, int maxValue, int initialValue),2020年7月29日,46,Gauge,參數(shù)initialValue只能取下面4個值之一。 Gauge.CONTINUOUS_IDLE:表示目前程序停止,即一個靜止的圖; Gauge.CONTINUOUS_RUNNING:表示目前程序正在運(yùn)行,即一個動畫圖; Gauge.INCREMENTAL_IDLE:表示目前程序停止,即一個靜止的圖; Gauge.INCREMENTAL_UPDATING:表示目前程序正在運(yùn)行,即一個動畫圖,但只有每次重新調(diào)用setValue方法時,畫面才會漫漫更新,2020年7月29日,47,Gauge方法,設(shè)置或讀取滑桿的當(dāng)前值或最大值 public void setValue(int value) public int getValue() public void setMaxValue(in

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論