在本课中,将向应用程序中添加以下控件:
可在其中输入名称的文本字段。
将文本字段中的名称添加到数据库的菜单项。
显示表中名称的列表字段。
然后,您将添加代码以在文本字段中插入名称并刷新列表。
更新 HomeScreen 类以添加控件。
双击 [Package Explorer] 窗口中的 HomeScreen.java,然后在调用 [getDataAccess] 方法的 [try-catch] 语句上方插入以下代码:
// Add an edit field for entering new names _nameEditField = new EditField( "Name: ", "", 50, EditField.USE_ALL_WIDTH ); add (_nameEditField ); // Add an ObjectListField for displaying a list of names _nameListField = new ObjectListField(); add( _nameListField ); // Add a menu item addMenuItem(_addToListMenuItem); |
为 [_nameEditField] 和 [_nameListField] 添加类级别声明,然后用 [run] 方法(目前为空)定义 [MenuItem]。这些声明位于 [_statusLabel] 和 [_da] 声明之后。
在 [private DataAccess _da;] 语句下方插入以下代码:
private EditField _nameEditField; private ObjectListField _nameListField; private MenuItem _addToListMenuItem = new MenuItem("Add", 1, 1){ public void run() { // TODO } }; |
向 [DataAccess] 类中添加新方法,以在表中插入行。
双击 [Package Explorer] 窗口中的 DataAccess.java,然后在 [createDatabaseSchema] 方法后插入以下代码:
public void insertName(String name){ try { UUIDValue nameID = _conn.createUUIDValue(); String sql = "INSERT INTO Names(ID, Name) VALUES(?, ?)"; PreparedStatement ps = _conn.prepareStatement(sql); ps.set(1, nameID); ps.set(2, name); ps.execute(); _conn.commit(); ps.close(); } catch(ULjException uex) { Dialog.alert("ULjException: " + uex.toString()); } catch( Exception ex ){ Dialog.alert("Exception: " + ex.toString()); } } |
将 [NameRow] 类添加到项目中。
在 [Package Explorer] 窗口中,展开 [HelloBlackBerry] 并单击 [src]。
单击 [File] » [New] » [Class]。
随即出现 [New Java Class] 窗口。
在 [Name] 字段中,键入 NameRow。
单击 [Finish]。
NameRow.java 文件将出现在 [Package Explorer] 窗口中项目的下方。
更新 [NameRow] 类,使其能够在 [Names] 表中将行存储为对象。
双击 [Package Explorer] 窗口中的 NameRow.java,然后使用以下片段替换代码:
class NameRow { public NameRow( String nameID, String name ) { _nameID = nameID; _name = name; } public String getNameID(){ return _nameID; } public String getName(){ return _name; } public String toString(){ return _name; } private String _nameID; private String _name; } |
[toString] 方法由 [ObjectListField] 控件使用。
向 [DataAccess] 类中添加新方法,以将行读入到对象矢量中。
双击 [Package Explorer] 窗口中的 DataAccess.java,然后在 [insertName] 方法后插入以下代码:
public Vector getNameVector(){ Vector nameVector = new Vector(); try { String sql = "SELECT ID, Name FROM Names"; PreparedStatement ps = _conn.prepareStatement(sql); ResultSet rs = ps.executeQuery(); while (rs.next()) { String nameID = rs.getString(1); String name = rs.getString(2); NameRow nr = new NameRow(nameID, name); nameVector.addElement(nr); } } catch(ULjException uex) { Dialog.alert("ULjException: " + uex.toString()); } catch(Exception ex) { Dialog.alert("Exception: " + ex.toString()); } return nameVector; } |
向 [HomeScreen] 类中添加新方法,以刷新屏幕上显示的列表内容。
双击 [Package Explorer] 窗口中的 HomeScreen.java,然后在 [_addToListMenuItem] 方法后插入以下代码:
public void refreshNameList() { //Clear the list _nameListField.setSize(0); //Refill from the list of names Vector nameVector = _da.getNameVector(); for( Enumeration e = nameVector.elements(); e.hasMoreElements(); ){ NameRow nr = ( NameRow )e.nextElement(); _nameListField.insert(0, nr); } } |
更新 [HomeScreen] 类使其调用 [refreshNameList] 方法,以确保应用程序启动时列表已填充。
在 [HomeScreen] 构造函数结尾处之前插入以下代码:
// Fill the ObjectListField refreshNameList(); |
向 [HomeScreen] 类中添加新方法,以向屏幕上的列表中添加行。
在 [refreshNameList] 方法后插入以下代码:
private void onAddToList(){ String name = _nameEditField.getText(); _da.insertName(name); this.refreshNameList(); _nameEditField.setText(""); _statusLabel.setText(name + " added to list"); } |
更新 [HomeScreen] 类中的 [run] 方法,以便调用 [onAddToList] 方法。
用以下代码片段替换表述 [\\ TODO] 的代码行:
onAddToList(); |
单击 [File] » [Save All]。
运行模拟器来验证应用程序可以编译和运行。
在 [Package Explorer] 窗口中,单击 Application.java,然后单击 [Run] » [Run As] » [BlackBerry Simulator]。
如果在工作区打开了多个项目,可单击 [Run] » [Run Configurations],选择 [HelloBlackBerry],然后单击 [Run]。
[HelloBlackBerry] 项目开始编译,随后模拟器窗口出现。
选择 Eclipse 中的 [Problems] 选项卡,确保编译过程未出差错。
从模拟器菜单单击 [File] » [Load Java Program]。
浏览至 SQL Anywhere 安装目录 \UltraLite\UltraLiteJ\BlackBerry4.2\ 并打开 UltraLiteJ12.cod 文件。
可能需要将 UltraLiteJ12.cod 和 DBG 文件复制到模拟器的工作目录(例如,C:\Eclipse\plugins\net.rim.ejde.componentpack6.0.0_6.0.0.0.26\components\simulator\)以运行应用程序。在完成复制后,将不再需要从模拟器菜单装载 Java 程序。
从模拟器菜单单击 [Simulate] » [Set IT Policy]。
[Set IT Policy] 窗口出现。
在 [Policy] 字段中,单击 [Allow Third Party Apps To Use Persistent Store] » [>>]。
单击 [Set],然后单击 [Close]。
启动应用程序。
在模拟器窗口中,导航至 [Downloads],然后运行 [HelloBlackBerry] 应用程序。
会出现一个屏幕,显示 [Hello BlackBerry] 标题栏、[Status: Connected] 文本和 [Name] 字段。
在名称字段,键入 John Smith。
单击 [*EMPTY*],然后选择 [Add]。
John Smith 出现在列表中,表示名称条目已被添加到数据库的 [Names] 表中。
在添加名称时,名称会存储在数据库中。如果在关闭应用程序后重新将其打开,则会从数据库中检索这些名称,并将其添加到列表中。
停止模拟器。
在模拟器窗口中,单击 [File] » [Exit]。
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |