建立清單框
使用清單框可顯示使用者可從中選擇一個或多個值的清單。
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();
}
}