WEB开发网      濠电姷鏁告慨鐑藉极閸涘﹦绠鹃柍褜鍓氱换娑欐媴閸愬弶鎼愮痪鍓ф嚀閳规垿鎮╃€圭姴顥濋梺姹囧€楅崑鎾诲Φ閸曨垰绠涢柛顐f礃椤庡秹姊虹粙娆惧剳闁哥姵鍔欐俊鐢稿礋椤栨艾鍞ㄩ梺闈浤涙担鎻掍壕闁圭儤顨嗛埛鎺楁煕閺囥劌浜滄い蹇e弮閺屸€崇暆鐎n剛鏆犻柧浼欑到閵嗘帒顫濋悡搴d画缂佹鍨垮缁樻媴缁涘娈┑顔斤公缁犳捇銆佸鎰佹▌濠电姭鍋撳ù锝囩《閺€浠嬫煟濡鍤嬬€规悶鍎辫灃闁绘ê寮堕崯鐐电磼閸屾氨效鐎规洘绮忛ˇ瀵哥棯閹佸仮鐎殿喖鐖煎畷鐓庘槈濡警鐎崇紓鍌欑劍椤ㄥ棗鐣濋幖浣歌摕闁绘棃顥撻弳瀣煟濡も偓閻楀棗鈻撳Δ鍛拺閻犲洠鈧櫕鐏€闂佸搫鎳愭慨鎾偩閻ゎ垬浜归柟鐑樼箖閺呮繈姊洪棃娑氬婵☆偅鐟╅、娆掔疀閺冨倻鐦堥梺姹囧灲濞佳勭閿曞倹鐓曢柕濞垮劤閸╋絾顨ラ悙鏉戝妤犵偞锕㈤、娆撴嚃閳哄骞㈤梻鍌欐祰椤鐣峰Ο鑲╃煋妞ゆ棁锟ユ禍褰掓煙閻戞ɑ灏ù婊冪秺濮婅櫣绱掑Ο铏逛桓闂佹寧娲嶉弲娑滅亱闂佸憡娲﹂崹閬嶅煕閹达附鐓欓柤娴嬫櫅娴犳粌鈹戦垾鐐藉仮闁诡喗顨呴埥澶愬箳閹惧褰囩紓鍌欑贰閸犳牠顢栭崨鎼晣闁稿繒鍘х欢鐐翠繆椤栨粎甯涙繛鍛喘濮婄粯鎷呴悷閭﹀殝缂備浇顕ч崐鍨嚕缂佹ḿ绡€闁搞儯鍔嶅▍鍥⒑缁嬫寧婀扮紒瀣崌瀹曘垽鎮介崨濠勫幗闁瑰吋鐣崹濠氬煀閺囥垺鐓ユ慨妯垮煐閻撶喖鐓崶銉ュ姢缂佸宕电槐鎺旂磼濡偐鐣虹紓浣虹帛缁诲牆鐣峰鈧俊姝岊槺缂佽鲸绻堝缁樻媴缁涘娈愰梺鎼炲妺閸楀啿鐣烽鐐茬骇闁瑰濮靛▓楣冩⒑缂佹ɑ鈷掗柍宄扮墦瀵偊宕掗悙瀵稿幈闂佹娊鏁崑鎾绘煛閸涱喚鎳呮俊鍙夊姇铻i悶娑掑墲閺傗偓闂備胶绮崝鏇炍熸繝鍥у惞闁绘柨鐨濋弨鑺ャ亜閺冨洦顥夐柛鏂诲€濋幗鍫曟倷閻戞ḿ鍘遍梺鍝勬储閸斿本鏅堕鐐寸厱婵炲棗绻掔粻濠氭煛鐏炵晫效鐎规洦鍋婂畷鐔碱敆閳ь剙鈻嶉敐鍥╃=濞达絾褰冩禍鐐節閵忥絾纭炬い鎴濇川缁粯銈i崘鈺冨幍闁诲孩绋掑玻璺ㄧ不濮椻偓閺屻劌鈽夊Ο澶癸絾銇勯妸锝呭姦闁诡喗鐟╅、鏃堝礋椤撴繄绀勯梻鍌欐祰椤曟牠宕伴弽顐ょ濠电姴鍊婚弳锕傛煙椤栫偛浜版俊鑼额嚙閳规垿鍩勯崘銊хシ濡炪値鍘鹃崗妯侯嚕鐠囨祴妲堥柕蹇曞閳哄懏鐓忓璺虹墕閸旀挳鏌涢弬娆炬Ш缂佽鲸鎸婚幏鍛矙鎼存挸浜鹃柛婵勫劤閻挾鎲搁悧鍫濈瑨闁哄绶氶弻鐔煎礈瑜忕敮娑㈡煛閸涱喗鍊愰柡灞诲姂閹倝宕掑☉姗嗕紦 ---闂傚倸鍊搁崐鎼佸磹閻戣姤鍊块柨鏃堟暜閸嬫挾绮☉妯哄箻婵炲樊浜滈悡娑㈡煕濞戝崬骞樻い鏂挎濮婅櫣鎹勯妸銉︾彚闂佺懓鍤栭幏锟�
开发学院软件开发Java eSWT 移动扩展简介,第 3 部分: 在移动应用程序中... 阅读

eSWT 移动扩展简介,第 3 部分: 在移动应用程序中使用高级对话框以及与设备相关的特性

 2010-03-17 00:00:00 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹妞嬪孩顐芥慨姗嗗厳缂傛氨鎲稿鍫罕闂備礁婀遍搹搴ㄥ窗閺嶎偆涓嶆い鏍仦閻撱儵鏌i弴鐐测偓鍦偓姘炬嫹闂傚倸鍊搁崐鎼佸磹妞嬪海鐭嗗〒姘e亾妤犵偛顦甸弫鎾绘偐閹绘帞鈧參姊哄Ч鍥х仼闁诲繑鑹鹃悾鐑藉蓟閵夛妇鍘甸梺瑙勵問閸犳牠銆傛總鍛婄厱閹艰揪绱曟牎闂侀潧娲ょ€氫即鐛幒妤€绠f繝闈涘暙娴滈箖鏌i姀鈶跺湱澹曟繝姘厵闁绘劦鍓氶悘杈ㄤ繆閹绘帞澧涚紒缁樼洴瀹曞崬螖閸愬啠鍓濈换娑樼暆婵犱胶鏁栫紓浣介哺閹瑰洤鐣烽幒鎴僵闁瑰吀鐒﹂悗鎼佹⒒娴g儤鍤€闁搞倖鐗犻獮蹇涙晸閿燂拷濠电姷鏁告慨鐑藉极閸涘﹥鍙忔い鎾卞灩缁狀垶鏌涢幇闈涙灈鐎瑰憡绻冮妵鍕箻鐎靛摜鐣奸梺纭咁潐濞茬喎顫忕紒妯肩懝闁逞屽墮宀h儻顦查悡銈夋煏閸繃鍋繛宸簻鎯熼梺瀹犳〃閼冲爼宕濋敃鈧—鍐Χ閸℃鐟愰梺鐓庡暱閻栧ジ宕烘繝鍥у嵆闁靛骏绱曢崢顏堟⒑閹肩偛鍔楅柡鍛⊕缁傛帟顦寸紒杈ㄥ笚濞煎繘鍩℃担閿嬵潟闂備浇妗ㄩ悞锕傚箲閸ヮ剙鏋侀柟鍓х帛閺呮悂鏌ㄩ悤鍌涘闂傚倸鍊搁崐鎼佸磹妞嬪孩顐芥慨姗嗗厳缂傛氨鎲稿鍫罕闂備礁婀遍搹搴ㄥ窗閺嶎偆涓嶆い鏍仦閻撱儵鏌i弴鐐测偓鍦偓姘炬嫹  闂傚倸鍊搁崐鎼佸磹閻戣姤鍤勯柤鍝ユ暩娴犳氨绱撻崒娆掑厡缂侇噮鍨堕妴鍐川閺夋垹鍘洪悗骞垮劚椤︻垶宕¢幎鑺ョ厪闊洦娲栨牎闂佽瀵掗崜鐔奉潖閾忓湱纾兼俊顖氭惈椤矂姊虹拠鑼婵ǜ鍔戦崺鈧い鎺嶇閸ゎ剟鏌涢幘璺烘瀻妞ゎ偄绻愮叅妞ゅ繐瀚悗顓烆渻閵堝棙绀€闁瑰啿閰e畷婊勫鐎涙ǚ鎷洪梻渚囧亞閸嬫盯鎳熼娑欐珷妞ゆ柨澧界壕鐓庮熆鐠虹尨鍔熺紒澶庢閳ь剚顔栭崰鏍€﹂柨瀣╃箚婵繂鐭堝Σ鐑芥⒑缁嬫鍎愰柟鐟版搐铻為柛鎰╁妷濡插牊绻涢崱妤冪婵炲牊锕㈠缁樻媴妞嬪簼瑕嗙紓鍌氱М閸嬫挻绻涚€涙ḿ鐭ら柛鎾跺枛瀹曟椽鍩€椤掍降浜滈柟鐑樺灥閳ь剙缍婂鎶筋敆閸曨剛鍘遍柣搴秵娴滅兘鐓鍌楀亾鐟欏嫭纾婚柛妤€鍟块锝夊磹閻曚焦鞋闂備礁鎼Λ瀵哥不閹捐钃熼柕濞炬櫆閸嬪棝鏌涚仦鍓р槈妞ゅ骏鎷�
核心提示:简介本系列的 eSWT 移动扩展简介,第 1 部分:使用简单小部件快速构建移动应用程序 “使用简单小部件快速构建移动应用程序” 对移动扩展包作了概述,eSWT 移动扩展简介,第 3 部分: 在移动应用程序中使用高级对话框以及与设备相关的特性,它还描述了一些基本控件(CaptionedContro

简介

本系列的 eSWT 移动扩展简介,第 1 部分:使用简单小部件快速构建移动应用程序 “使用简单小部件快速构建移动应用程序” 对移动扩展包作了概述。它还描述了一些基本控件(CaptionedControl、ConstrainedText、DateEditor、ListBox 和 ListView)。

eSWT 移动扩展简介,第 2 部分:在移动应用程序中使用高级控件 “在移动应用程序中使用高级控件” 则涵盖了一些高级控件(MobileShell、SortedList、HyperLink、TextExtension 和 TaskTip)。

在本文中,学习如何使用:

MultiPageDialog 创建一个选项卡对话框。

QueryDialog 给出一个提示对话框供用户获得数据输入。

TimedMessageBox 简单地告知用户有限的信息。

MobileDevice 获得有关设备特征和功能的更多信息。

Screen 表示可供应用程序使用的显示屏。

Input 表示基于键的输入特性。

MultiPageDialog

MultiPageDialog
类的实例表示一个选项卡对话框。此对话框包含多个页面。每个页面均包含一个复合组件(composite)。在任何给定的时刻,只有一个页面是可见的。页面是否可见可以由终端用户选定,也可以通过应用程序编程选定。每个页面都要有一个标签。此标签可以被平台显示为文本、图标或是同时显示为两者。页面标签的大小和位置依赖于实现。对话框的边界也依赖于实现。页面创建后,应用程序可以通过 page.getBounds 查询页面的实际大小。

页面的数量没有固定的限制。但是如果没有足够的资源来创建一个新页面,就会抛出一个运行时异常。

与页面相关的命令只有在页面可见时才有效。这些命令也可以与整个 MultiPageDialog 关联,只需将对话框的 shell 设置为这些命令的关联控件,如下所示:

Command c = new Command(page.getShell(), Command.GENERAL, 10) 

MultiPageDialog 是一个模态对话框,支持如下样式。它依赖于实现;实际的外观和行为可能会因设备而不同。

SYSTEM_MODAL

APPLICATION_MODAL

PRIMARY_MODAL

清单 1 显示了创建 MultiPageDialog 的示例代码。

清单 1. 创建 MultiPageDialog

Composite pages[] = new Composite[3]; 
MultiPageDialog mpd = new MultiPageDialog(shell); 
pages[0] = mpd.createPage("Personal",null); 
pages[1] = mpd.createPage("Business",null); 
pages[2] = mpd.createPage("Travel",null); 
pages[0].setLayout(new RowLayout(SWT.VERTICAL)); 
// Name 
CaptionedControl name = new CaptionedControl(pages[0], SWT.LEFT_TO_RIGHT); 
name.setText("Name:"); 
Text userName = new Text(name, SWT.SINGLE); 
userName.setText("John"); 
userName.setEditable(true); 
// Surname 
CaptionedControl surname = new CaptionedControl(pages[0], SWT.LEFT_TO_RIGHT); 
surname.setText("Surname:"); 
Text userSurname = new Text(surname, SWT.SINGLE); 
userSurname.setText("Marshall"); 
// Date of birth 
CaptionedControl birthDate = new CaptionedControl(pages[0], SWT.LEFT_TO_RIGHT); 
birthDate.setSize(200,30); 
birthDate.setText("Date of birth:"); 
DateEditor birthDateEditor = new DateEditor(birthDate, SWT.NORMAL, DateEditor.DATE | 
DateEditor.FULL); 
// Phone number 
CaptionedControl phoneNumber = new CaptionedControl(pages[0], SWT.LEFT_TO_RIGHT); 
phoneNumber.setText("Phone number:"); 
ConstrainedText userPhoneNumber = new ConstrainedText(phoneNumber, SWT.NORMAL, 
ConstrainedText.PHONENUMBER); 
userPhoneNumber.setText("6902690369"); 
pages[0].layout(); 
mpd.open(); 

上述的代码片段创建了一个具有三个页面的 MultiPageDialog,如下所示。

图 1. 样例 MultiPageDialog
eSWT 移动扩展简介,第 3 部分: 在移动应用程序中使用高级对话框以及与设备相关的特性

具有 SWT.VIRTUAL 样式的 MobilMultiPageDialog

如果要创建的 MultiPageDialog 具有多个页面(选项卡)并且每个页面上有多个小部件,那么 MultiPageDialog 的初始化以及显示都将会花费很长时间。为了在启动具有很多页面且每个页面内又具有很多控件的 MultiPageDialog 时改进性能,可以创建它的 SWT.VIRTUAL 样式。

清单 2 显示了创建一个具有 SWT.VIRTUAL 样式的 MultiPageDialog 的示例代码。

清单 2. 创建一个具有 SWT.VIRTUAL 样式的 MultiPageDialog

MultiPageDialog dialog = new MultiPageDialog(shell, SWT.PRIMARY_MODAL|SWT.VIRTUAL); 
dialog.setText("ESWT_CORE_EX_005_VirtualMPD"); 
int j=6; 
for(int i=1;i<j;i++){ 
 dialog.createPage("Page"+i, null); 
} 
  
dialog.addListener(SWT.SetData, new Listener() { 
 public void handleEvent(Event event) { 
  Composite page = (Composite)event.item; 
  switch(event.index) { 
  case 0: 
  { 
   page.setLayout(new FillLayout()); 
   List list = new List(page, SWT.SINGLE); 
   list.add("A"); 
   list.add("B"); 
   page.layout(); 
  } 
  break; 
  case 1: 
  { 
   page.setLayout(new FillLayout()); 
   SortedList sortedList = new SortedList(page, SWT.V_SCROLL, SortedList.FILTER); 
   sortedList.add("banana"); 
   sortedList.add("123"); 
   sortedList.add("12"); 
   sortedList.add("happyhour"); 
   sortedList.add("toobad"); 
   sortedList.add("youknowwhat"); 
   sortedList.add("yes"); 
   sortedList.add("886222333"); 
   page.layout(); 
  } 
  break; 
  case 2: 
  { 
   page.setLayout(new FillLayout()); 
   Table table = new Table(page, SWT.FULL_SELECTION | SWT.BORDER); 
   table.setHeaderVisible(true); 
    
   TableColumn column = new TableColumn(table,SWT.LEFT); 
   column.setText("Not Virtual Table"); 
   column.setWidth(480); 
        
   for(int i = 0; i<10 ; i ++) { 
    TableItem tableitem = new TableItem(table, SWT.NONE, i); 
    tableitem.setText(String.valueOf(i)+"\n"+"I am Sam"); 
   } 
   table.pack(); 
   page.layout(); 
  } 
  break; 
  default: 
  { 
   Tree tree = new Tree(page, SWT.FULL_SELECTION | SWT.BORDER); 
   tree.setVisible(true); 
   tree.pack(); 
      
   for (int k=0;k<10;k++){ 
    TreeItem treeitem = new TreeItem(tree, SWT.NONE,k); 
 treeitem.setText(String.valueOf(k)); 
 for (int m=0;m<10;m++){ 
     TreeItem subtreeitem = new TreeItem(treeitem, SWT.NONE,m); 
  subtreeitem.setText(String.valueOf(m)); 
 } 
   } 
   tree.setBounds(page.getClientArea()); 
  } 
 } 
} 
}); 
dialog.open(); 

上述代码创建了一个具有五个页面的 MultiPageDialog,如图 2 所示。它还添加了一个侦听程序来侦听 SWT.Set_Data 事件。若用户选择了一个页面,侦听程序就会捕获 SWT.Set_Data 以便基于选定的页面索引初始化和显示相应的控件。对比在所有 控件和页面都初始化后才显示 MultiPageDialog,这将节省很多时间。

图 2. 具有 SWT.VIRTUAL 样式的 MultiPageDialog
eSWT 移动扩展简介,第 3 部分: 在移动应用程序中使用高级对话框以及与设备相关的特性

查看原图(大图)

QueryDialog

QueryDialog
可创建一个模态窗口来提示终端用户输入数据。它包含一个提示文本和一个输入字段。QueryDialog 支持五种类型的输入字段:STANDARD、NUMERIC、 PASSWORD、TIME 和 DATE。对话框的位置和大小均依赖于实现。

可以使用如下所示的一种样式来创建一个 QueryDialog。若在不指定样式(比如 QueryDialog(Shell parent))的情况下创建一个 QueryDialog,那么 APPLICATION_MODAL 就是默认的样式。

APPLICATION_MODAL模态限于这个应用程序。用户输入在同一个 应用程序内的其他窗口受阻,但在其他应用程序不受阻。PRIMARY_MODAL模态限于此对话框的父窗口。用户输入只在对话框的父窗口受阻。

清单 3 显示了 QueryDialog 的一个代码示例。

清单 3. QueryDialog 示例

QueryDialog dialog = new QueryDialog(shell, SWT.NONE, QueryDialog.STANDARD); 
dialog.setPromptText("Enter game name:", "enter here"); 
String gameName = dialog.open(); 
 
QueryDialog dialog2 = new QueryDialog(shell, SWT.NONE, QueryDialog.PASSWORD); 
dialog2.setPromptText("Enter password:", "19800828"); 
dialog2.setMaximum(12); 
dialog2.setMinimum(6); 
String passwd= dialog2.open(); 
 
QueryDialog dialog3 = new QueryDialog(shell, SWT.NONE, QueryDialog.TIME); 
dialog3.setPromptText("Enter TIME:", "14:14:14"); 
String time= dialog3.open(); 
  
QueryDialog dialog4 = new QueryDialog(shell, SWT.NONE, QueryDialog.NUMERIC); 
dialog4.setPromptText("Enter number:", "19800828"); 
dialog4.setMaximum(15); 
dialog4.setMinimum(10); 
String num= dialog4.open(); 
  
QueryDialog dialog5 = new QueryDialog(shell, SWT.NONE, QueryDialog.DATE); 
dialog5.setPromptText("Enter DATE:", "2006-05-01"); 
String date= dialog5.open(); 

上述代码创建了五种 QueryDialog。图 3 显示了具有一些示例输入文本的结果。

第一个 QueryDialog 用默认文本 “Enter here” 进行提示。您可以对之进行修改并键入任何文本。若单击 OK,它会将 gameName 的值设为被输入的文本。如果单击 Cancel,则不会进行任何设置。

第二个 QueryDialog 用 * 样式的默认密码 19800828 进行提示。您可以键入任何密码文本;文本的长度被限制为 6-12 字符。如果单击 OK,它会将 passwd 的值设为所输入的文本。如果单击 Cancel,则不会进行任何设置。

第三个 QueryDialog 用 hh:mm:ss 样式的默认时间 14:14:14 进行提示。您可以输入任何数字。如果单击 OK,它会将 time 的值设为所输入的文本。如果单击 Cancel,则不会进行任何设置。

第四个 QueryDialog 用默认数字 19800828 进行提示。您可以键入任何数字;数字文本的长度被限制为 10-15。如果单击 OK,它会将 num 的值设为所输入的文本。如果单击 Cancel,则不会进行任何设置。

第五个 QueryDialog 用默认的日期 2006-05-01 进行提示。显示的格式依赖于本地语言环境。您可以输入任何日期。如果单击 OK,它会将 date 的值设为所输入的文本。如果单击 Cancel,则不会进行任何设置。

图 3. 示例 QueryDialog
eSWT 移动扩展简介,第 3 部分: 在移动应用程序中使用高级对话框以及与设备相关的特性

TimedMessageBox

TimedMessageBox
是一个模态窗口,可用来以一种标准的样式简单地通知用户有限的信息。一个 TimedMessageBox 可在一段时间后自动关闭。无需为 TimedMessageBox 定义按钮样式。与 TaskTip 不同,TimedMessageBox 是一个模态对话框,因此执行将一直受阻,直到此对话框在一小段时间后关闭。实际的超时时长依赖于实现。应用程序不能更改时长。

可以使用如下所示的这些样式来标识所创建的 TimedMessageBox 的类型。

ICON_WORKING告知某动作成功。ICON_INFORMATION告知可能不需要用户动作。ICON_WARNING告知可能需要用户介入。ICON_ERROR告知有一个严重情况发生。

清单 4 所示的代码创建了不同类型的 TimedMessageBox。

清单 4. TimedMessageBox 示例

TimedMessageBox tmb1 = new TimedMessageBox(shell,SWT.ICON_WORKING); 
tmb1.setMessage("This is a ICON_WORKING message"); 
   
TimedMessageBox tmb2 = new TimedMessageBox(shell,SWT.ICON_INFORMATION); 
tmb2.setMessage("This is a ICON_INFORMATION message"); 
   
TimedMessageBox tmb3 = new TimedMessageBox(shell,SWT.ICON_WARNING); 
tmb3.setMessage("This is a ICON_WARNING message"); 
   
TimedMessageBox tmb4 = new TimedMessageBox(shell,SWT.ICON_ERROR); 
tmb4.setMessage("This is a ICON_ERROR message"); 
   
tmb1.open(); 
tmb2.open(); 
tmb3.open(); 
tmb4.open(); 

上述代码创建了三种类型的四个 TimedMessageBox,如图 4 所示。它会顺序显示每个 TimedMessageBox 并且会自动关闭它。

图 4. 示例 TimedMessageBox
eSWT 移动扩展简介,第 3 部分: 在移动应用程序中使用高级对话框以及与设备相关的特性

MobileDevice

MobileDevice
类的实例代表的是正在使用的设备。它提供了一些方法供应用程序更多地了解特定于设备的特征和功能。

应用程序可以查询哪些输入特性和显示屏幕是此设备的永久部分。这被视为是本地 特性。有些设备还允许输入机制或屏幕在运行时才被加到此设备。这被视为是远端 特性。因为本地特性不是时有时无的,因而只查询它们一次就够了。因远端设备可在任何时候添加或删除,所以一个应用程序需要添加一个 MobileDeviceListener 以便在这些事件发生时得到通知。

MobileDeviceEvent

MobileDevice
具有其自己的事件,即 MobileDeviceEvent,它在设备配置发生变化时发出。应用程序可以添加 MobileDeviceListener 以便在事件触发时获得通知。MobileDeviceListener 内定义了三种方法,如下所示。

MobileDeviceListener 内定义的方法

方法名称描述
deviceChanged(MobileDeviceEvent 事件)设备配置发生改变(比如打开或关闭)时调用
inputChanged(MobileDeviceEvent 事件)输入配置发生改变时调用。
screenChanged(MobileDeviceEvent 事件)屏幕配置发生改变时调用。

使用如下方法,应用程序可以添加和删除 MobileDeviceListener。

添加和删除 MobileDeviceListener

方法名称描述
addMobileDeviceListener(MobileDeviceListener 侦听程序)将这个侦听程序添加到侦听程序集,当设备配置发生改变时通过调用 MobileDeviceListener 接口内定义的一个方法通知侦听程序。
removeMobileDeviceListener(MobileDeviceListener 侦听程序)从侦听程序集中删除侦听程序,当设备配置发生改变时将通知侦听程序。

获得设备

一个应用程序不能使用 MobileDevice() 创建 MobileDevice 的一个实例。要获得 MobileDevice 的一个静态实例,应用程序应该使用 getMobiledevice()。移动设备一般不能由应用程序更改;它们充当的是一个静态对象,应用程序可查询设备配置并在配置变化时获得通知。

用来从 MobileDevice 对象获得 MobileDevice、Input 和 Screen 对象的方法

方法名称描述
getMobileDevice()返回 MobileDevice 类的一个单独实例。
getInputs()返回描述可用于此设备的输入特性的 Input 对象数组。
getScreens()返回描述可用于此设备的显示特性的 Screen 对象数组。

清单 5 显示了如何获得 MobileDevice 的一个实例并获得设备配置,包括 Input 和 Screen。

清单 5. MobileDevice 示例

final MobileDevice md = MobileDevice.getMobileDevice(); 
Screen[] screens = md.getScreens(); 
Input[] inputs = md.getInputs(); 

屏幕

Screen 控件代表可供应用程序使用的屏幕。Screen 定义了表示 Screen 实例目的的一些使用类型,如下所示。

PRIMARY一次只有一个主屏幕处于活动状态。SECONDARY同时可以有多个副屏幕处于活动状态。STATUS副屏幕的子类型,显示极少的内容以用于通知。

Screen 定义了方向样式。

LANDSCAPE表明文本通常跨最长的宽度。PORTRAIT表明文本通常跨最短的宽度。

事件

Screen 定义了其自己的事件,即屏幕配置更改时的 ScreenEvent。一个应用程序可以添加 ScreenEvent 以便在事件触发时获得通知。ScreenListener 内定义了三种方法。

ScreenListener 内定义的方法

方法名称描述
screenActivated(ScreenEvent 事件) 在屏幕激活时发出。
screenDeactivated(ScreenEvent 事件) 在屏幕不再激活时发出。
screenOrientationChanged(ScreenEvent 事件) 在屏幕的方向改变时发出。

使用如下方法,应用程序可以添加和删除 ScreenListener。

添加和删除 ScreenListener

方法名称描述
addEventListener(ScreenListener 侦听程序)将侦听程序添加到侦听程序集,通过向其发送 ScreenListener 接口内定义的一个消息可在发生屏幕事件时通知侦听程序。
removeEventListener(ScreenListener 侦听程序)从侦听程序集中删除侦听程序,在屏幕事件发生时将通知侦听程序。

获得屏幕配置

Screen 提供了几个方法来获得屏幕配置,如下所示。

获得屏幕配置的方法

方法名称描述
getBounds()返回屏幕的界限。
getColorDepth()返回屏幕的色深,单位是比特/像素。
getLocation()返回屏幕设备的位置。
getOrientation()返回屏幕的方向。
getUsage()返回屏幕的使用类型。

除了屏幕配置的检索外,Screen 还提供了一种方法来改变方向。

用来改变方向的方法

方法名称描述
setOrientation(int orientation)若此设备支持,可设置屏幕的方向。

清单 6 显示了如何获得 Screen 的一个数组并输出每个屏幕的边界。

清单 6. 屏幕示例

final MobileDevice md = MobileDevice.getMobileDevice(); 
Screen[] screens = md.getScreens(); 
for(int i=0; i<screens.length; i++) { 
 Rectangle bounds = screens[i].getBounds(); 
 System.out.println("screen "+i+": width="+bounds.width+", height="+bounds.height); 
} 

输入

Input 代表基于键的输入特性。Input 有四种类型。

FULL_KEYBOARD输入特性具有完整键盘所具有的典型硬件键。KEYPAD输入特性只具有标记为 0-9、* 和 # 的硬件键。LIMITED_KEYBOARD输入特性具有比键区多、比完整键盘少的硬件键。SOFTKEYS输入特性具有一个或多个含义可配置的硬件键。

获得输入配置

Input 提供了两种方法来检索输入配置。

检索输入配置的方法

方法名称描述
getLocation()返回输入设备的位置。
getType()返回输入设备的类型。

结束语

在 “eSWT 移动扩展简介” 系列的最后一篇文章中,您学习了另外六个可用来丰富移动应用程序的强大 eSWT 移动控件。您可以开始为各种不同的移动电话开发能够访问与设备相关的特征的 Java 应用程序。

本文示例源代码或素材下载

Tags:eSWT 移动 扩展

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接