内容摘要:J2ME记录管理系统 ( RMS )允许数据流被储存并且在一个记录基础上访问数据。由应用程序开发者把每个记录解析到字段水平。RMS程序包内部的接口支持一个应用程序定义的基础上的比较与检索功能。
AddressDB类包含好几个 public访问方法,它们都对来自外部调用者的访问隐藏记录存储的细节。AddressDB()构造程序调用 RecordStore.openRecordStore(),正如前面讨论的那样。我也创建了四个助手方法用于访问基层记录存储: recordCount()、 getAddress()、 getName()和 addAddress()。注意,在本例子中addAddress()方法只是在 name/address字段之间放了一个逗号。同样地, getAddress()和getName()从记录存储中取回 name/address字段。
AddressBookMIDLet类(见下)包含一个 AddressDB对象,一个 List GUI组件和一个 Back命令和 Exit命令。我们将使用 AddressDB类中的 addAddress()方法,把地址添加到数据库中。在 startApp()方法中,使用调用 List.append()和 AddressDB.addAddress()方法来填充 List。这是在 commandAction()内部完成的,其结果就是创建一个新的文本框并且添加显示出来。因为 cmdBack命令对象是使用 Command.BACK变量创建的,当又一个元素被添加显示时,环境知道显示一个 Back命令按钮。然后通过把显示焦点设置回 mnuMain列表对象,处理 “back”命令事件。
import javax.microedition.midlet.*;import javax.microedition.lcdui.*;
public class AddressBookMIDLet extends MIDlet implementsCommandListener {
Display display = null;
List mnuMain = null;
TextBox txtAddress = null;
static final Command cmdBack = new Command("Back", Command.BACK,0);
static final Command cmdExit = new Command("Exit", Command.STOP,3);
AddressDB dbAddress = null;
public AddressBookMIDLet()
{
dbAddress = new AddressDB();
file://杜撰的地址
dbAddress.addAddress("Bill Gates", "123 Elm Street");
dbAddress.addAddress("George Bush", "742 Avenue B");
dbAddress.addAddress("Yuki Aka", "853 Franklin Avenue");
dbAddress.addAddress("Oba Muchow", "101 Scenic Highway");
dbAddress.addAddress("Bill Clinton", "741 Highway 101");
}
public void startApp() throws MIDletStateChangeException {
display = Display.getDisplay(this);
mnuMain = new List("Addresses", Choice.IMPLICIT);
int count = dbAddress.recordCount();
for (int i=0; i < count; i++) {
mnuMain.append(dbAddress.getName(i+1), null);
}
mnuMain.addCommand(cmdExit);
mnuMain.setCommandListener(this);
display.setCurrent(mnuMain);
}
public void pauseApp() {
display = null;
}
public void destroyApp(boolean unconditional) {
notifyDestroyed();
}
public void commandAction(Command c, Displayable d) {
String str = c.getLabel();
if (str.equals("Exit")) {
destroyApp(true);
}
else if (str.equals("Back")) {
display.setCurrent(mnuMain);
}
else {
List select = (List)display.getCurrent();
String txtSelect =
AddressDB.getName(select.getSelectedIndex() + 1) + ", " +
dbAddress.getAddress(select.getSelectedIndex() + 1);
txtAddress = new TextBox("Address", txtSelect, 255,
TextField.ANY);
txtAddress.addCommand(cmdBack);
txtAddress.setCommandListener(this);
display.setCurrent(txtAddress);
}
}
}
责编:豆豆技术应用
- Java新闻
- Java入门教程
- Java开发工具
- J2EE
- J2SE
- J2ME
- EJB/Spring
- Applet/Swing
- Servlet/JSP
- Struts/Hibernate
- JDBC/JDO
- Ajax
- 认证考试
- JAVA对象比较器Comparator
- Java 6 RowSet 使用完全剖析
- 深入了解"Java"中的“异常机制”
- 讨论5种跟踪Java执行的方法
- Java专业术语标准化规范
- java中线程概念描述
- JAVA中的反射机制详解
- Java语言灵巧指针与垃圾回收
- 讲述java语言中内部类的研究
- Java对于Cookie的操作详解