科技行者

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

知识库

知识库 安全导航

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

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

  • 扫一扫
    分享文章到微信

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

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

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

关键字:

  • 评论
  • 分享微博
  • 分享邮件
 6. List

  一个list是一个包含一系列可选项的screen。List和ChoiceGroup具有Choice 接口定义的一些共同的特性。用户可以通过一项项地移动与该list交互。注意,高级API交互并不激发任何回馈到应用程序的事件。这仅在作出一选择时发生。

  可用List类来创建List的实例:

public List(String title, int listType);
public List(String title, int listType, String[] stringElements,Image[] imageElements);

  第一个构造器用来创建一个空的list,不过可以指定标题和list类型。针对第二个参数,有3种类型列表可以选择: IMPLICIT, EXCLUSIVE和MULTIPLE。这些选项能被使用List类实现的Choice接口提供的常数来指定:

  ·EXCLUSIVE类型的list,一次仅有一个选项,与AWT中的一组单选按钮很相似。

  ·IMPLICIT类型的list,提供一种互斥的选项,此时焦点选项是隐式选择的,很象一个下拉菜单。

  ·MULTIPLE类型的list,一次可以提供任意数目的选项,以一系列复选框形式显示。

  例如,下面语句生成一个EXCLUSIVE类型的list,标题是"Choose one"。

List list = new List("Choose one", Choice.EXCLUSIVE);

  一旦你创造了一空列表,你就能插入,添加或在列表中进行选择替换。每个选择都有在列表中代表它的位置的一个整数索引。第一选择从0开始,直到的当前大小减一为止。为此,List类提供了下面一些方法:

public int append(String stringElement, Image imageElement);
public void insert(int index, String stringElement, Image imageElement);
public void set(int index, String stringElement, Image imageElement);

  注意选择由一个文本串和一可选的图像组成。例如,下面介绍如何把一些选择添加到前面的列表中去。注意append( )方法返回与该选项相关的已经传入的索引值,以备后面还需要它。

int saveIndex = list.append("save", null);
int deleteIndex = list.append("delete", null);

  你能使用下列方法删除列表的任何索引:

public void delete(int index);

  如果你想要检索对应任何索引值的文本元素或图像元素,下列方法可以实现:

public String getString(int index);
public Image getImage(int index);

  如果你想要设定,取消设定,或在列表检索当前被选择项的索引,或查询任何索引以判断是否它是当前被选中的,可以使用下列方法:

public int getSelectedIndex( )
public boolean isSelected(int index);
public setSelectedIndex(int index, boolean selected);

  最后,你可以使用一个布尔数组来设置整个列表的选定状态。这是典型的选项标志法,可以用下面的方法来存取。注意getSelectedFlags( )方法并不返回一个布尔数组,而是作修改(并返回以整数形式返回被选择的元素的数目);这是一种典型的优化技术,以防止在每次调用该方法时新建一个数组。该数组至少应该有同列表中元素数目一样的长度。如果更长了,超出相应长度的元素置为false。

public int getSelectedFlags(boolean[] selectedArray);
public void setSelectedFlags(boolean[] selectedArray);

  对MULTIPLE型列表,setSelectedFlags( )方法设置列表中每个元素的状态。对EXCLUSIVE 型或者IMPLICIT型列表,在布尔数组中,只有一个元素被设置为true;如果没有元素为true,那么第一元素将被选择。如果有两个或者多个元素为true,系统将选择第一个为true的元素并选中它。

  让我们看一些列表组件的例子。下面代码生成一个EXCLUSIVE型列表:

Display display = Display.getDisplay(this);
List menu = new List("Edit", Choice.EXCLUSIVE);
menu.append("Save");
menu.append("Move to");
menu.append("delete");
display.setCurrent(menu);

  在该列表中,仅可选择一选项,见图7。


图 7.一个具有互斥选择的列表的例子

  如果你把列表类型设为IMPLICIT,结果将如图 8所示。注意这里的单选按钮已经去掉。


图 8.一个具有隐式选择的列表的例子

  还是与EXCLUSIVE 类型一样,在该列表中,仅可选择一项;但是,焦点选项是隐式选择好的。第三种类型MULTIPLE的情况,如图 9示。


图 9.一个具有多选择列表的例子

  如我们以前提及,在一个list中的选项由索引所参照,它们是0到size( ) - 1间的连续整数。0指向第一个选项,size( ) - 1指向最后一个选项。例如,可以如图8的方法来删除"Move To"选项:

list.delete(1);

  在此,我们使用第二个列表构造器来创建一列表,指定它的标题,列表的类型,一个字符串和一个图像串用作它的初始内容。下列代码创造一个有两个初始的选择但没有图象的列表:

List list2 =new List("Make a selection",Choice.EXCLUSIVE,{"Add", "Delete"},null);

  在列表的元素的个数由传递给构造器的数组stringElements(不能为null)的长度所决定。但是,数组imageElements可以是null。然而,如果该数组不是null,它的长度必须与stringElements一致。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

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

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