BlackBerry ListField

来源:互联网 发布:mysql注入点测试 编辑:程序博客网 时间:2024/05/29 05:06

创建列表框

使用列表框可显示用户可从中选择一个或多个值的列表。

   1. 导入以下类:

      import net.rim.device.api.system.*;
      import net.rim.device.api.ui.*;
      import net.rim.device.api.ui.component.*;
      import net.rim.device.api.ui.container.*;
      import java.util.Vector;

   2. 通过扩展 UiApplication 类来创建应用程序框架。 在 main() 中,创建新类的实例并调用 enterEventDispatcher(),
   以启用应用程序来接收事件。 在构造器中,调用 pushScreen 以显示应用程序的自定义屏幕。
    CreateMenuScreen 类表示自定义屏幕(在步骤 3 中介绍)。

      public class ListFields extends UiApplication
      {
           public static void main(String[] args)
           {
               ListFields theApp = new ListFields();
               theApp.enterEventDispatcher();
           }
           public ListFields()
           {
               pushScreen(new ListFieldScreen());
           }
      }

   3. 通过扩展 MainScreen 类来创建应用程序的自定义屏幕。 在构造器中,调用 setTitle() 以显示屏幕的标题。
    调用 add() 以在屏幕上显示文本字段。 调用 addMenuItem() 以将菜单项添加至 MainScreen 创建的菜单。

      class ListFieldScreen extends MainScreen
      {
          private ListField _listField;
          private Vector _listElements;
          public ListFieldScreen()
          {
              setTitle("List Field Sample");
          }
      }

   4. 在屏幕构造器中,创建列表框。 使用 Vector 类创建要添加至列表框的项目数组。 使用 ListField() 类创建列表框。
    调用 add() 以将列表框添加至屏幕。 调用步骤 4 中介绍的 initializeList() 以构建列表框。

      _listElements = new Vector();
      _listField = new ListField();
      ListCallback _callback = new ListCallback();
      _listField.setCallback(_callback);
      add(_listField);
      initializeList();

   5. 使用 String 对象创建一个方法,以指定要显示在列表框中的项目。 调用 addElement() 以将项目添加至列表。
   调用 setSize() 以指定列表框中的项目数。

      private void initializeList()
      {
          String itemOne = "List item one";
          String itemTwo = "List item two";
          _listElements.addElement(itemOne);
          _listElements.addElement(itemTwo);
          reloadList();
      }
      private void reloadList()
      {
          _listField.setSize(_listElements.size());
      }

   6. 创建实施 ListFieldCallback 接口的类。 实施 drawListRow() 以将列表框项目添加至屏幕。
    实施 get() 以返回位于指定索引的列表框项目。 实施 indexOfList() 以返回指定字符串的第一个匹配项。
     实施 getPreferredWidth() 以检索列表框的宽度。

      private class ListCallback implements ListFieldCallback
      {
     // 将列表框添加至屏幕
          public void drawListRow(ListField list, Graphics g, int index, int y, int w)
          {
              String text = (String)_listElements.elementAt(index);
              g.drawText(text, 0, y, 0, w);
          }
      //返回位于指定索引的列表项目
          public Object get(ListField list, int index)
          {
              return _listElements.elementAt(index);
          }
      //返回指定字符串的第一个匹配项
          public int indexOfList(ListField list, String prefix, int string)
          {
              return _listElements.indexOf(prefix, string);
          }
      //检索列表框的宽度
          public int getPreferredWidth(ListField list)
          {
              return Display.getWidth();
          }
      }

 

原创粉丝点击