科技时代新浪首页 > 科技时代 > 学园 > 正文

Java手机软件图形界面API之screen相关API(3)


http://www.sina.com.cn 2005年08月24日 09:36 天极yesky

  文/朱先忠编译

    5. Alert

  一个alert是一个显示文本和图像的普通的screen。它通知用户出错及另外一些异常信息。一个alert可以是模式的,也可以是定时的。
一个模式的alert在用户取消它之前一直停留在屏幕上,其时,它可能回到显示它之前的屏幕状态,或者转到一个由应用程序特别选择的屏幕。当你要求用户作出选择时,这是很有用的。如,你可能显示信息如"Are you sure?"并给出选项"Yes"和"No"。注意MIDP系统会自动 提供一种方法以取消一个模式的alert。如,在Sun的实现中,它提供了一个映射到软按钮的Done命令。

  一个定时的alert,则被显示指定(一般为几秒钟)的时间。在显示一条用户可能还不了解的信息时,这是很有用的。例如,你可能要显示如"Your message has been sent"的信息。但是,如果你指定一个定时的alert以一下子显示太长的信息,它会自动转换成一个模式的alert!
你可以用Alert类来创建一个alert:

public Alert(String title);
public Alert(String title,String alertText,Image alertImage,AlertType alertType);

  第一个构造器创建一个定时的alert。注意,这里的定时值并没有指定。然而,alert 将使用默认的timeout值,这个值可以用不可改变的getDefaultTimeout( )方法取得。如果你想要到改变alert的timeout,可以用setTimeout()方法并传入一个整数值以指明以毫秒为单位的timeout值。要获得alert当前的timeout值,可以用getTimeout()方法。

public int getDefaultTimeout( );
public int getTimeout( );
public void setTimeout(int t);

  例如,下列代码创建一个定时的alert,并且其timeout值设置为4秒:

Alert alert = new Alert("title");
alert.setTimeout(4000);

  另外你能传入常量Alert.FOREVER。

alert.setTimeout(Alert.FOREVER);

  你还可以用第二个构造器创建一个更细致的alert。该构造器允许你使用Image 对象在该alert上加上一个图标。而且,一个alert可以有一个类型,以指定这个alert的特性。当这种alert出现在用户面前时,MIDP 实现体可以用这一类型来播放一段合适的音响。AlertType类共提供五种类型的alert:AlertType.ALARM, AlertType.CONFIRMATION, AlertType.ERROR, AlertType.INFO还有AlertType.WARNING。作为一实例,下面的代码段创建一个AlertType.CONFIRMATION类型的alert,其上并不显示图标:

public Alert(String title, String messageString, Image alertImage,lertType alertType);

  如果你想忽略图像,标题,文本或者alert类型的话,你可以把第二个构造器中所有的参数置为null。构造器中每个这些附加的属性在Alert类中都有相应的存取函数:

public Image getImage( );
public String getString( );
public AlertType getType( );
public void setImage(Image img);
public void setString(String str);
public void setType(AlertType type);

  现在,我们来看一个既有定时alert又有模式alert的例子。下面的代码生成一个文本框对象和一个定时alert。当激活MIDlet 时,将显示该alert,五秒钟后文本框将自动显示出来。

TextBox tb = new TextBox("text box","Welcome to MIDP GUI Programming", 40, TextField.ANY);
Alert timedAlert = new Alert("Confirmation","Your message has been sent!", null, AlertType.CONFIRMATION);
TimedAlert.setTimeout(5000);
Display display = Display.getDisplay(this);
Display.setCurrent(timedAlert, tb);

  图 5展示了上面的代码是如何被显示的。一个提示"Your message has been sent!"的alert先被显示出来。五秒钟后,显示转到一个文本框,显示"Welcome to MIDP GUI Programming。"

Java手机软件图形界面API之screen相关API(3)
图 5.一个定时alert的例子

  如前面的例子所见,定时的alert不需要用户介入。另一方面,模式alert一直显示着,直到用户取消之,见下面例子。

TextBox tb = new TextBox("text box","Welcome to MIDP Programming",
40,Textfield.ANY);
Alert modalAert = new Alert("Error",
"Network error. Please try again later.",
null, AlertType.ERROR);
modalAlert.setTimeout(Alert.FOREVER);
Display display = Display.getDisplay(this);
display.setCurrent(modalAlert, tb);

  这时,显示网络错误的屏幕一直显示着,直到用户使用对应于Done命令的软键取消之,如图6所示。模式alert情况下的Done命令是由Sun公司的MIDP参考实现中自动提供的。在这个例子中,文本框屏幕仅在用户取消该alert后变成当前屏幕。

Java手机软件图形界面API之screen相关API(3)
图 6.一个模式alert的例子

[上一页] [1] [2] [3] [4] [下一页]

爱问(iAsk.com)



评论】【应用软件论坛】【收藏此页】【 】【多种方式看新闻】【下载点点通】【打印】【关闭




科技时代意见反馈留言板 电话:010-82628888-5828   欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

Copyright © 1996 - 2005 SINA Inc. All Rights Reserved

版权所有 新浪网