科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件Java手机软件图形界面API之screen相关API

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

看过一个关于screen的例子后,你应该会问起:你是如何来组织这些screen的?在它们之间是如何导航的?你是如何管理显示及输入设备的?

作者:朱先忠编译 来源:天极网 2007年11月22日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
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。"


图 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后变成当前屏幕。


图 6.一个模式alert的例子
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章