




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 陜西省商洛市商南縣2024-2025學(xué)年八年級上學(xué)期期末生物學(xué)試題(含答案)
- 湖南省邵陽市新邵縣第二中學(xué)2024-2025學(xué)年高三下學(xué)期2月開學(xué)考試生物學(xué)試題(含答案)
- 小學(xué)生作文素材故事解讀
- 風(fēng)險評估與應(yīng)對策略分析表
- 蓋板制作工程 現(xiàn)場質(zhì)量檢驗(yàn)報告單
- 基于人工智能的智能交通管理系統(tǒng)預(yù)案
- 餐飲行業(yè)廚師勞動合同
- 年度辦公室工作任務(wù)安排表
- 如何理解和運(yùn)用動詞:七年級英語語法專題
- 初中語法銜接教學(xué)方案:go與going的區(qū)別
- 《新能源汽車動力電池技術(shù)》課件
- 婦女健康 知識講座課件
- (已壓縮)礦產(chǎn)資源儲量技術(shù)標(biāo)準(zhǔn)解讀300問-1-90
- 醫(yī)院培訓(xùn)課件:《靜脈中等長度導(dǎo)管臨床應(yīng)用專家共識》
- 2023江蘇護(hù)理職業(yè)學(xué)院高職單招語文/數(shù)學(xué)/英語筆試參考題庫含答案解析
- 高二數(shù)學(xué)平面向量的基本定理
- 高中美術(shù)-美術(shù)鑒賞《審美自律》
- 強(qiáng)讀和弱讀-(課堂)課件
- 裕興新概念英語第二冊筆記第42課
- 管理高爾夫?qū)崙?zhàn)訓(xùn)練課程課件
- 2022年義務(wù)教育語文課程標(biāo)準(zhǔn)(2022版)解讀【新課標(biāo)背景下的初中名著閱讀教學(xué)質(zhì)量提升思考】
評論
0/150
提交評論